//
// Investigation
//

#include "stagesetup.h"

// Characters
#define CHR_DRCAROLL    0x39
#define CHR_INTRO_GUARD 0x3a
#define CHR_K7_GUARD    0x3b

// Objects
#define OBJ_CACHETERMINAL            0x01
#define OBJ_BOT_ACTIVATION_TERMINAL  0x02
#define OBJ_BOT_PROGRAMMING_TERMINAL 0x03
#define OBJ_K7AVENGER                0x04
#define OBJ_NIGHTVISION              0x05
#define OBJ_SHIELD                   0x06
#define OBJ_GOODTERM1                0x07
#define OBJ_GOODTERM2                0x08
#define OBJ_GOODTERM3                0x09
#define OBJ_UPLINKPC                 0x0a
#define OBJ_ALARMTERM1               0x0f
#define OBJ_ALARMTERM2               0x14
#define OBJ_ALARMTERM3               0x19
#define OBJ_UPLINKDOOR               0x22
#define OBJ_DATAUPLINK_BOND          0x25
#define OBJ_YELLOWBOT                0x37 // opens the secret door
#define OBJ_PURPLEBOT                0x38 // lasers
#define OBJ_HATCHPC                  0x3a
#define OBJ_DATAUPLINK_COOP          0x48
#define OBJ_CACHEDOOR1               0x55
#define OBJ_CACHEDOOR2               0x56
#define OBJ_CMP150_1                 0x57
#define OBJ_CMP150_2                 0x58
#define OBJ_PROXYMINES               0x59

// Stage flags
#define STAGEFLAG_DRCAROLL_LOCATED                   0x00000001
#define STAGEFLAG_UPLINK_SEARCHING                   0x00000002
#define STAGEFLAG_00000004                           0x00000004
#define STAGEFLAG_00000008                           0x00000008
#define STAGEFLAG_TRIGGER_OUTRO_AUDIO                0x00000010
#define STAGEFLAG_HAS_K7AVENGER                      0x00000020
#define STAGEFLAG_HAS_NIGHTVISION                    0x00000040
#define STAGEFLAG_HAS_SHIELD                         0x00000080
#define STAGEFLAG_ITEMS_UNCOLLECTABLE                0x00000100
#define STAGEFLAG_BOT_ACTIVE                         0x00000200
#define STAGEFLAG_BOT_REPROGRAMMED                   0x00000400
#define STAGEFLAG_ALL_ITEMS_COLLECTED                0x00000800
#define STAGEFLAG_UNACCEPTABLE_CASUALTIES            0x00001000
#define STAGEFLAG_CAMSPY_DESTROYED                   0x00002000
#define STAGEFLAG_SHUT_DOWN_EXPERIMENT1              0x00004000
#define STAGEFLAG_SHUT_DOWN_EXPERIMENT2              0x00008000
#define STAGEFLAG_SHUT_DOWN_EXPERIMENT3              0x00010000
#define STAGEFLAG_UPLINK_FINISHED                    0x00020000
#define STAGEFLAG_BOT_ACTIVE_MAINTENANCE             0x00040000
#define STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED  0x00080000
#define STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED 0x00100000
#define STAGEFLAG_ONE_SCIENTIST_DONE                 0x00200000
#define STAGEFLAG_TWO_SCIENTISTS_DONE                0x00400000
#define STAGEFLAG_THREE_SCIENTISTS_DONE              0x00800000
#define STAGEFLAG_ALARM1_ACTIVE                      0x01000000
#define STAGEFLAG_ALARM2_ACTIVE                      0x02000000
#define STAGEFLAG_ALARM3_ACTIVE                      0x04000000
#define STAGEFLAG_ALARM_RESPONDERS_SPAWNED           0x08000000
#define STAGEFLAG_UPLINKPC_DESTROYED                 0x10000000
#define STAGEFLAG_BOT_ACTIVE_CLEANING                0x20000000
#define STAGEFLAG_BOT_ACTIVE_NOPROGRAM               0x40000000
#define STAGEFLAG_GOODTERM_DESTROYED                 0x80000000

// AI Lists
#define AILIST_K7_GUARD             0x0402
#define AILIST_K7_SCIENTIST         0x0403
#define AILIST_SCIENTIST            0x0404
#define AILIST_INIT_SCIENTIST       0x0405
#define AILIST_NASTY_SCIENTIST      0x0406
#define AILIST_INIT_NASTY_SCIENTIST 0x0407
#define AILIST_ALARM_RESPONDER      0x0408
#define AILIST_UPLINK_RESPONDER     0x0409
#define AILIST_INIT_BASIC_GUARD     0x040a
#define AILIST_INIT_SHOCK_GUARD     0x040b
#define AILIST_PATH00               0x040c
#define AILIST_PATH01               0x040d // unused
#define AILIST_PATH02               0x040e
#define AILIST_PATH03               0x040f
#define AILIST_PATH04               0x0410 // unused
#define AILIST_PURPLEBOT_AT_LASERS  0x0413
#define AILIST_RADIOACTIVITY        0x0415
#define AILIST_OUTRO                0x0417

extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];

struct stagesetup setup = {
	NULL,
	NULL,
	NULL,
	intro,
	props,
	paths,
	ailists,
	NULL,
};

u32 props[] = {
	briefing(BRIEFINGTYPE_LOCATION, L_EAR_001)
	briefing(BRIEFINGTYPE_TEXT_PA,  L_EAR_000)
	briefing(BRIEFINGTYPE_TEXT_SA,  L_EAR_002)
	briefing(BRIEFINGTYPE_TEXT_A,   L_EAR_003)

	beginobjective(0, L_EAR_013, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Holograph radioactive isotope"
		require_object_holographed(0x39)
		fail_flags(STAGEFLAG_CAMSPY_DESTROYED)
	endobjective

	beginobjective(1, L_EAR_011, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Start security maintenance cycle"
		complete_flags(STAGEFLAG_BOT_ACTIVE_MAINTENANCE)
		fail_flags(STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED)
		fail_flags(STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED)
	endobjective

	beginobjective(2, L_EAR_010, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Shut down experiments"
		complete_flags(STAGEFLAG_SHUT_DOWN_EXPERIMENT1)
		complete_flags(STAGEFLAG_SHUT_DOWN_EXPERIMENT2)
		complete_flags(STAGEFLAG_SHUT_DOWN_EXPERIMENT3)
		fail_flags(STAGEFLAG_GOODTERM_DESTROYED)
		fail_flags(STAGEFLAG_UNACCEPTABLE_CASUALTIES)
		fail_flags(STAGEFLAG_00000008)
	endobjective

	beginobjective(3, L_EAR_012, (DIFFBIT_PA | DIFFBIT_PD)) // "Obtain experimental technologies"
		complete_flags(STAGEFLAG_ALL_ITEMS_COLLECTED)
		require_object_collected(OBJ_K7AVENGER)
		require_object_collected(OBJ_NIGHTVISION)
		require_object_collected(OBJ_SHIELD)
	endobjective

	beginobjective(4, L_EAR_009, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Locate Dr. Caroll"
		complete_flags(STAGEFLAG_DRCAROLL_LOCATED)
		fail_flags(STAGEFLAG_UPLINKPC_DESTROYED)
	endobjective

	tag(0x60, 1)
	lift(0x0100, MODEL_LIFT_PLATFORM, PAD_EAR_025B, OBJFLAG_00000008 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_FORCENOBOUNCE | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_LIFT_CHECKCEILING, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, 0, 1000, 0x025b, 0x025c, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000b6, 0x0010aaaa, 0x15000000)
	door(0x0100, MODEL_DD_ACCESSDOORUP, PAD_EAR_019B, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
	door(0x0100, MODEL_DD_ACCESSDOORDN, PAD_EAR_019C, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_ACCESSDOORUP, PAD_EAR_019D, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
	door(0x0100, MODEL_DD_ACCESSDOORDN, PAD_EAR_019E, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_ACCESSDOORUP, PAD_EAR_019F, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
	door(0x0100, MODEL_DD_ACCESSDOORDN, PAD_EAR_01A0, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	tag(0x27, 1)
	door(0x0100, MODEL_DD_LAB_DOOR_SEC, PAD_EAR_015D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	tag(0x24, 2)
	tag(0x40, 2)
	door(0x0100, MODEL_DOOR4A_G5, PAD_EAR_0169, OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000708, 0x00000000, 0x00000001, 0x00001200)
	door(0x0100, MODEL_DOOR4B_G5, PAD_EAR_0168, OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000708, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LAB_DOOR_WIND, PAD_EAR_015E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00c80384, 0x00000000, 0x00000100)
	tag(0x5b, 1)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015F, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_016D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	tag(0x5d, 1)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_016E, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_016F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	tag(0x5c, 1)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_0170, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	tag(0x5e, 2)
	tag(0x5f, 2)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0175, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0176, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0178, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0177, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xfffffffd, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0179, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_017A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_017C, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_017B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xfffffffd, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0171, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_SECTOR2TOP, PAD_EAR_0172, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0162, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_CAUTIONTOP, PAD_EAR_0163, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0164, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_CAUTIONTOP, PAD_EAR_0165, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	tag(0x47, 1)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0166, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_CAUTIONTOP, PAD_EAR_0167, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0173, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_SECTOR2TOP, PAD_EAR_0174, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_017F, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0180, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0181, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_SECTOR3TOP, PAD_EAR_0182, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	tag(0x45, 1)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0183, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0184, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0xffffffff, 0x00000000)
	tag(0x44, 1)
	door(0x0100, MODEL_DD_LAB_SECTOR3, PAD_EAR_017D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_4000, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LAB_SECTOR3, PAD_EAR_017E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_4000, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_0185, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_0186, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	tag(0x22, 1)
	door(0x0100, MODEL_DD_LAB_SECTOR3WIND, PAD_EAR_0187, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00c80384, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LAB_SECTOR3WIND, PAD_EAR_0188, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00c80384, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0189, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_RESTRICTED, PAD_EAR_018A, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	tag(0x5a, 1)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_018B, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_RESTRICTED, PAD_EAR_018C, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	tag(0x26, -1)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_018D, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_RESTRICTED, PAD_EAR_018E, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_018F, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
	door(0x0100, MODEL_DD_LAB_SECTOR4TOP, PAD_EAR_0190, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
	tag(0x23, 1)
	door(0x0100, MODEL_DR_CAROLL_DOOR, PAD_EAR_0199, OBJFLAG_00000010, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f851, 0x0000e666, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
	door(0x0100, MODEL_DR_CAROLL_DOOR_MAIN, PAD_EAR_0198, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
	door(0x0100, MODEL_DR_CAROLL_DOOR_LEFT, PAD_EAR_0196, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DR_CAROLL_DOOR_RIGHT, PAD_EAR_0197, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DR_CAROLL_DOOR_BMAIN, PAD_EAR_0195, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DR_CAROLL_DOOR_BLEFT, PAD_EAR_0193, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_DR_CAROLL_DOOR_BRIGHT, PAD_EAR_0194, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xfffffffb, 0x00000000)
	tag(0x28, 5)
	tag(0x29, 5)
	tag(0x2a, 5)
	tag(0x2b, 5)
	tag(0x2c, 5)
#if VERSION >= VERSION_NTSC_1_0
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F0, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F1, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F2, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F3, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F4, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
#else
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F0, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F1, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F2, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F3, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F4, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
#endif
	tag(0x2d, 5)
	tag(0x2e, 5)
	tag(0x2f, 5)
	tag(0x30, 5)
	tag(0x31, 5)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F5, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F6, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F7, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F8, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01F9, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
	tag(0x32, 5)
	tag(0x33, 5)
	tag(0x34, 5)
	tag(0x35, 5)
	tag(0x36, 5)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01FA, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01FB, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01FC, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01FD, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
	door(0x0100, MODEL_LASDOOR, PAD_EAR_01FE, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
	tag(0x3f, 1)
	door(0x0100, MODEL_DD_GRATE, PAD_EAR_016A, OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_AICANNOTUSE | OBJFLAG2_DOOR_ALTCOORDSYSTEM, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_SLIDING, 0x00000008, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
	tag(0x01, 1)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0213, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
	tag(0x02, 1)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0214, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
	tag(0x03, 1)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0215, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0216, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0217, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0218, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0219, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021A, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021B, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	tag(0x3a, 1)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021C, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 4)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021D, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021E, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021F, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0220, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0221, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0222, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0223, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0224, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0225, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0226, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0227, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0228, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0229, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022A, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022B, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022C, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022D, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022E, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022F, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0230, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0231, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0232, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0233, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0234, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0235, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0236, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0245, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000, 35)
	chr(SPAWNFLAG_BASICGUARD, 0x2f, PAD_EAR_0146, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SURPRISABLE | CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAMP | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x002f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x30, PAD_EAR_0147, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAMP | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0030, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x31, PAD_EAR_0148, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAMP | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0031, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x32, PAD_EAR_0149, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAMP | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0032, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x33, PAD_EAR_014A, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAMP | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0033, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x00, PAD_EAR_001F, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH00, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_CAN_RETREAT | CHRFLAG0_SURPRISABLE | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0000, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x01, PAD_EAR_0135, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0019, -1, 1000, 100, CHRFLAG0_CAN_EXAMINE_BODY | CHRFLAG0_SURPRISABLE | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000 | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_01, 0x3c, 0, 0, 3, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0001, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x02, PAD_EAR_0136, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x001a, -1, 1000, 100, CHRFLAG0_CAN_EXAMINE_BODY | CHRFLAG0_SURPRISABLE | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000 | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_01, 0x3d, 0, 0, 3, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0002, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x3c, PAD_EAR_0134, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_RETREAT | CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 1, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x003c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x03, PAD_EAR_0137, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_02, 0x3e, 0, 0, 2, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0003, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x04, PAD_EAR_0111, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0004, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x05, PAD_EAR_0112, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0005, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x06, PAD_EAR_0113, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0006, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x0a, PAD_EAR_0031, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH02, -1, -1, 200, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x000a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x0b, PAD_EAR_0038, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH02, -1, -1, 200, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x000b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x0c, PAD_EAR_0062, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH03, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x000c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x0d, PAD_EAR_006E, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH03, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x000d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x0e, PAD_EAR_0114, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x000e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x0f, PAD_EAR_0115, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x000f, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x10, PAD_EAR_0116, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 1, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0010, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x11, PAD_EAR_0117, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0065, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 1, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0011, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x12, PAD_EAR_0118, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0065, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0012, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x13, PAD_EAR_0119, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0069, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 1, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0013, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x14, PAD_EAR_011A, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0069, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0014, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x15, PAD_EAR_011B, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0015, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x16, PAD_EAR_011C, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0016, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x17, PAD_EAR_011D, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0017, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x18, PAD_EAR_011E, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0018, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x19, PAD_EAR_011F, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_HOLD_POSITION | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0019, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x1a, PAD_EAR_0120, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x001a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x1b, PAD_EAR_0121, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x001b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x1c, PAD_EAR_0122, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_09, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x001c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD, 0x1d, PAD_EAR_0123, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_09, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x001d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD | SPAWNFLAG_FIXEDHEIGHT, 0x1e, PAD_EAR_0124, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 1, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x001e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD, 0x1f, PAD_EAR_0125, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x001f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD, 0x20, PAD_EAR_0126, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x0020, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD, 0x21, PAD_EAR_0127, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x0021, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD, 0x22, PAD_EAR_0128, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x0022, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD, 0x23, PAD_EAR_0129, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x0023, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_BASICGUARD, 0x24, PAD_EAR_012A, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRDRAGON, 0x0024, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
	chr(SPAWNFLAG_ANTINONINTERACTABLE, 0x3b, PAD_EAR_013B, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_K7_GUARD, -1, -1, 1, 20, CHRFLAG0_CAN_RETREAT | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRAVENGER, 0x003b, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_INVINCIBLE | OBJFLAG_FORCENOBOUNCE, 0, 0, WEAPON_K7AVENGER)
	tag(0x04, -1)
	chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x38, PAD_EAR_013C, BODY_DD_LABTECH, HEAD_RANDOM, AILIST_K7_SCIENTIST, 0x0076, -1, 1, 20, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
	chr(SPAWNFLAG_BASICGUARD, 0x29, PAD_EAR_0155, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x0029, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x2a, PAD_EAR_0156, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x002a, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x2b, PAD_EAR_014B, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0F, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x002b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x2c, PAD_EAR_014C, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0F, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x002c, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x2d, PAD_EAR_0151, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x002d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_BASICGUARD, 0x2e, PAD_EAR_0152, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
	weapon(0x0100, MODEL_CHRCMP150, 0x002e, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
	chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x35, PAD_EAR_0138, BODY_DD_LABTECH, HEAD_JAMIE, AILIST_INIT_SCIENTIST, 0x0076, -1, 1000, 10, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
	chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x36, PAD_EAR_0139, BODY_DD_LABTECH, HEAD_JON, AILIST_INIT_SCIENTIST, -1, -1, 1000, 10, CHRFLAG0_FORCESAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 1, 0, 0, 0)
	chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x37, PAD_EAR_013A, BODY_DD_LABTECH, HEAD_DUNCAN2, AILIST_INIT_SCIENTIST, -1, -1, 1000, 10, 0, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 2, 0, 0, 0)
	chr(SPAWNFLAG_ANTINONINTERACTABLE, 0x3a, PAD_EAR_0106, BODY_DDSHOCK, HEAD_DARLING, GAILIST_IDLE, -1, -1, 1000, 100, CHRFLAG0_CAN_RETREAT | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
	chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x39, PAD_EAR_010C, BODY_DRCAROLL, 0x00, GAILIST_IDLE, -1, -1, 1000, 100, CHRFLAG0_CAN_RETREAT | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
	tag(0x0b, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0246, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x0c, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0247, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x0d, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0248, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x0e, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0249, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x10, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024A, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x11, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024B, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x12, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024C, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x13, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024D, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x08, 3)
	tag(0x14, 2)
	tag(0x15, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024E, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x16, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024F, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x17, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0250, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x18, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0251, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x09, 3)
	tag(0x19, 2)
	tag(0x1a, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0252, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x1b, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0253, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x1c, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0254, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x1d, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0255, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x07, 3)
	tag(0x0f, 2)
	tag(0x1e, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0256, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x1f, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0257, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x20, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0258, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	tag(0x21, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0259, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
	stdobject(0x0100, MODEL_LAB_TABLE, PAD_EAR_023C, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	tag(0x0a, 1)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_025A, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
	tag(0x37, 1)
	hovercar(0x00c0, MODEL_HOOVERBOT, PAD_EAR_0001, OBJFLAG_00000008 | OBJFLAG_HOVERCAR_INIT | OBJFLAG_HOVERCAR_40000000 | OBJFLAG_HOVERCAR_ISHOVERBOT, OBJFLAG2_IMMUNETOANTI, 0, 100, 0x0411)
	tag(0x38, 1)
	hovercar(0x00c0, MODEL_TESTERBOT, PAD_EAR_003B, OBJFLAG_00000008 | OBJFLAG_INVINCIBLE | OBJFLAG_HOVERCAR_40000000 | OBJFLAG_HOVERCAR_ISHOVERBOT, OBJFLAG2_IMMUNETOANTI, 0, 100, 0x0412)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01B3, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01B4, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01B8, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01B9, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01BA, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01BB, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01BC, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	tinted_glass(0x0100, MODEL_WINDOW, PAD_EAR_01B5, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000, 0x00c80384)
	tinted_glass(0x0100, MODEL_WINDOW, PAD_EAR_01B6, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000, 0x00c80384)
	tinted_glass(0x0100, MODEL_WINDOW, PAD_EAR_01B7, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000, 0x00c80384)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01BD, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01BE, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01BF, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
	tag(0x3e, 1)
	stdobject(0x0100, MODEL_DD_CHAIR, PAD_EAR_020C, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0100, MODEL_DD_DESK, PAD_EAR_020B, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_020A, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	stdobject(0x0100, MODEL_LAB_CHAIR, PAD_EAR_020D, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
	stdobject(0x0100, MODEL_LAB_TABLE, PAD_EAR_020E, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_020F, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	stdobject(0x0100, MODEL_LAB_CHAIR, PAD_EAR_0211, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
	stdobject(0x0100, MODEL_LAB_TABLE, PAD_EAR_0210, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0212, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D4, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D3, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D2, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D1, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D0, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01CF, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01CE, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01CD, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C7, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C6, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C5, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C4, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C3, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C2, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C1, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C0, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01CB, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01CA, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C9, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01C8, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01CC, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01DD, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E4, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E3, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E2, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E1, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E0, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01DF, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01DE, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E5, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E6, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E7, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E8, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01E9, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01EA, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01EB, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01EC, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D5, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D6, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D7, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D8, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01D9, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01DA, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01DB, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01DC, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01ED, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01EE, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
	glass(0x0100, MODEL_WINDOW, PAD_EAR_01EF, OBJFLAG_00000002 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_ORTHOGONAL | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
	tag(0x3d, 1)
	stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01A9, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01AA, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	tag(0x3c, 1)
	stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01AB, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01AC, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01AD, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01AE, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01AF, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01B0, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01B1, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01B2, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	stdobject(0x0200, MODEL_DD_PLANTSPIKE, PAD_EAR_01A1, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0166, MODEL_DD_PLANTRUBBER, PAD_EAR_01A2, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0200, MODEL_DD_PLANTSPIKE, PAD_EAR_01A3, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0180, MODEL_DD_PLANTSPIKE, PAD_EAR_01A4, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0180, MODEL_DD_PLANTRUBBER, PAD_EAR_01A5, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0200, MODEL_DD_PLANTSPIKE, PAD_EAR_01A6, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0180, MODEL_DD_PLANTRUBBER, PAD_EAR_01A7, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0133, MODEL_DD_PLANTSPIKE, PAD_EAR_01A8, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_025D, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_025E, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_025F, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0260, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0261, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0262, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0263, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0264, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0265, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0266, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0267, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0268, OBJFLAG_00000008 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0033, MODEL_QUADPOD, PAD_EAR_013D, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, 0, 1000)

	/**
	 * @bug: This should be using MODEL_CHRNIGHTSIGHT.
	 *
	 * When picking up night vision the game checks if the perfect darkness
	 * cheat is enabled and skips adding the night vision to your inventory as
	 * it would already be there. But because this uses IR specs instead, the
	 * check doesn't match and a duplicate night vision is added to the
	 * inventory.
	 */
	tag(0x05, 1)
	stdobject(0x0100, MODEL_MISC_IRSPECS, PAD_EAR_013D, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_COLLECTABLE | OBJFLAG_FORCENOBOUNCE | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PLAYERUNDROPPABLE, 1000)
	rename_object(-1, WEAPON_NIGHTVISION, L_EAR_045, L_EAR_046, L_EAR_047, L_EAR_048, L_EAR_049) // "Obtain Night Vision."

	tag(0x06, 1)
#if VERSION >= VERSION_NTSC_1_0
	stdobject(0x0100, MODEL_CHRSHIELD, PAD_EAR_0243, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_COLLECTABLE | OBJFLAG_FORCENOBOUNCE | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PLAYERUNDROPPABLE, 1000)
	rename_object(-1, WEAPON_SHIELDTECHITEM, L_EAR_050, L_EAR_051, L_EAR_052, L_EAR_053, L_EAR_054) // "Obtain shield tech item."
#else
	stdobject(0x0100, MODEL_CHRSHIELD, PAD_EAR_0243, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_COLLECTABLE | OBJFLAG_FORCENOBOUNCE | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PLAYERUNDROPPABLE, 1000)
	rename_object(-1, WEAPON_BRIEFCASE, L_EAR_050, L_EAR_051, L_EAR_052, L_EAR_053, L_EAR_054) // "Obtain shield tech item."
#endif
	tag(0x25, 1)
	weapon(0x0180, MODEL_CHRDATATHIEF, -1, OBJFLAG_FALL, 0, 0, WEAPON_DATAUPLINK)
	rename_object(-1, WEAPON_DATAUPLINK, L_EAR_055, L_EAR_056, L_EAR_057, L_EAR_058, L_EAR_059) // "Obtain Data Uplink."
	tag(0x48, 1)
	weapon(0x0180, MODEL_CHRDATATHIEF, -1, OBJFLAG_FALL, 0, 0, WEAPON_DATAUPLINK)
	rename_object(-1, WEAPON_DATAUPLINK, L_EAR_055, L_EAR_056, L_EAR_057, L_EAR_058, L_EAR_059) // "Obtain Data Uplink."
	tag(0x41, 1)
	autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026B, OBJFLAG_UPSIDEDOWN, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000, 0x026e, 0x00004000, 0xffffc000, 0x000000da, 0x000a0000)
	tag(0x42, 1)
	autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026C, OBJFLAG_UPSIDEDOWN, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000, 0x026f, 0x00004000, 0xffffc000, 0x000000da, 0x000a0000)
	tag(0x43, 1)
	autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026D, OBJFLAG_UPSIDEDOWN, OBJFLAG2_EXCLUDE_A | OBJFLAG2_EXCLUDE_SA, 0, 1000, 0x0270, 0x00004000, 0xffffc000, 0x000005b0, 0x000a0000)
	autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026B, OBJFLAG_UPSIDEDOWN, OBJFLAG2_EXCLUDE_A, 0, 1000, 0x026e, 0x00004000, 0xffffc000, 0x00000e38, 0x00140000)
	autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026C, OBJFLAG_UPSIDEDOWN, OBJFLAG2_EXCLUDE_A, 0, 1000, 0x026f, 0x00004000, 0xffffc000, 0x00000e38, 0x00140000)
	stdobject(0x0133, MODEL_A51_CRATE2, PAD_EAR_0269, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0133, MODEL_A51_CRATE2, PAD_EAR_026A, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	tag(0x39, 1)
	stdobject(0x0400, MODEL_ISOTOPE, PAD_EAR_0158, OBJFLAG_00000008 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
	stdobject(0x0400, MODEL_ISOTOPEEXPERIMENT, PAD_EAR_0157, OBJFLAG_FALL | OBJFLAG_00000100 | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_NOFALL | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
	tag(0x49, 1)
	shield(0x0100, MODEL_CHRSHIELD, PAD_EAR_027E, OBJFLAG_FALL, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000)
	tag(0x4a, 1)
	shield(0x0100, MODEL_CHRSHIELD, PAD_EAR_027F, OBJFLAG_FALL, OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000)
	tag(0x4b, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0271, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x4c, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0272, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x4d, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0273, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x4e, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0274, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x4f, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0275, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x50, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0276, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x51, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0277, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x52, 1)
	ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0278, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
	tag(0x53, 1)
	weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_0279, OBJFLAG_00000008, OBJFLAG2_IMMUNETOANTI, 0, WEAPON_CMP150)
	tag(0x54, 1)
	weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_027A, OBJFLAG_00000008, OBJFLAG2_IMMUNETOANTI, 0, WEAPON_CMP150)
	tag(0x55, 2)
	tag(0x56, 2)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_016B, OBJFLAG_00000008 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_016C, OBJFLAG_00000008 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
	tag(0x57, 2)
	tag(0x58, 2)
	weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_027B, OBJFLAG_00000008 | OBJFLAG_UNCOLLECTABLE, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_INVISIBLE, 0, WEAPON_CMP150)
	weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_027C, OBJFLAG_00000008 | OBJFLAG_UNCOLLECTABLE, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_INVISIBLE, 0, WEAPON_CMP150)
	link_guns(-1, -2)
	tag(0x59, 1)
	weapon(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_027D, OBJFLAG_FALL, OBJFLAG2_IMMUNETOANTI, 0, WEAPON_PROXIMITYMINE)
	endprops
};

s32 intro[] = {
	intro_weapon(WEAPON_FALCON2, -1)
	ammo(AMMOTYPE_PISTOL, 100)
	ammo(AMMOTYPE_RIFLE, 50)
	intro_weapon(WEAPON_EYESPY, -1)
	outfit(OUTFIT_DEFAULT)
	spawn(PAD_EAR_001B)
	endintro
};

s32 path00[] = {
	PAD_EAR_001F,
	PAD_EAR_001E,
	PAD_EAR_001D,
	PAD_EAR_001C,
	PAD_EAR_000C,
	PAD_EAR_000F,
	PAD_EAR_0010,
	PAD_EAR_000E,
	PAD_EAR_0004,
	PAD_EAR_0003,
	PAD_EAR_0001,
	PAD_EAR_0012,
	PAD_EAR_0011,
	PAD_EAR_0013,
	PAD_EAR_0014,
	PAD_EAR_0015,
	-1,
};

s32 path01[] = {
	PAD_EAR_004F,
	PAD_EAR_004E,
	PAD_EAR_004D,
	PAD_EAR_004C,
	PAD_EAR_004B,
	PAD_EAR_004A,
	PAD_EAR_0049,
	PAD_EAR_002A,
	PAD_EAR_002B,
	PAD_EAR_002C,
	PAD_EAR_002D,
	PAD_EAR_002E,
	PAD_EAR_0029,
	PAD_EAR_002A,
	PAD_EAR_0049,
	PAD_EAR_004A,
	PAD_EAR_004B,
	PAD_EAR_004C,
	PAD_EAR_004D,
	PAD_EAR_004E,
	-1,
};

s32 path02[] = {
	PAD_EAR_0031,
	PAD_EAR_0034,
	PAD_EAR_0033,
	PAD_EAR_0032,
	PAD_EAR_0035,
	PAD_EAR_0036,
	PAD_EAR_0038,
	PAD_EAR_0039,
	PAD_EAR_003A,
	-1,
};

s32 path03[] = {
	PAD_EAR_0062,
	PAD_EAR_0061,
	PAD_EAR_0063,
	PAD_EAR_0065,
	PAD_EAR_0066,
	PAD_EAR_0067,
	PAD_EAR_0069,
	PAD_EAR_006A,
	PAD_EAR_006D,
	PAD_EAR_006E,
	-1,
};

s32 path04[] = {
	PAD_EAR_0107,
	PAD_EAR_0108,
	PAD_EAR_0109,
	-1,
};

s32 path05[] = {
	PAD_EAR_0001,
	PAD_EAR_0002,
	PAD_EAR_000C,
	PAD_EAR_001D,
	PAD_EAR_001E,
	PAD_EAR_001F,
	PAD_EAR_0028,
	PAD_EAR_0029,
	PAD_EAR_002D,
	PAD_EAR_002A,
	PAD_EAR_002E,
	PAD_EAR_002E,
	PAD_EAR_002E,
	-1,
};

s32 path06[] = {
	PAD_EAR_002E,
	PAD_EAR_0029,
	PAD_EAR_0028,
	PAD_EAR_001F,
	PAD_EAR_001E,
	PAD_EAR_001D,
	PAD_EAR_000C,
	PAD_EAR_0002,
	PAD_EAR_0002,
	PAD_EAR_0002,
	-1,
};

s32 path07[] = {
	PAD_EAR_003B,
	PAD_EAR_0039,
	PAD_EAR_003B,
	PAD_EAR_0039,
	-1,
};

s32 path08[] = {
	PAD_EAR_003B,
	PAD_EAR_003C,
	PAD_EAR_003B,
	-1,
};

s32 path09[] = {
	PAD_EAR_0038,
	PAD_EAR_0035,
	PAD_EAR_0033,
	PAD_EAR_0034,
	PAD_EAR_0031,
	PAD_EAR_0030,
	PAD_EAR_002B,
	PAD_EAR_002A,
	PAD_EAR_0049,
	PAD_EAR_004A,
	PAD_EAR_004B,
	PAD_EAR_004C,
	PAD_EAR_004D,
	PAD_EAR_0050,
	PAD_EAR_004E,
	PAD_EAR_0042,
	PAD_EAR_0043,
	PAD_EAR_005E,
	PAD_EAR_0061,
	PAD_EAR_0065,
	PAD_EAR_0069,
	PAD_EAR_006D,
	PAD_EAR_006B,
	PAD_EAR_006C,
	PAD_EAR_00BD,
	PAD_EAR_00BE,
	-1,
};

s32 path10[] = {
	PAD_EAR_00BE,
	PAD_EAR_012E,
	PAD_EAR_012F,
	PAD_EAR_0130,
	PAD_EAR_00C7,
	PAD_EAR_00CD,
	PAD_EAR_00C8,
	PAD_EAR_00C4,
	PAD_EAR_0130,
	PAD_EAR_012F,
	PAD_EAR_012E,
	PAD_EAR_00BE,
	PAD_EAR_00BD,
	PAD_EAR_011C,
	PAD_EAR_00BE,
	-1,
};

s32 path11[] = {
	PAD_EAR_003B,
	PAD_EAR_003B,
	PAD_EAR_003B,
	-1,
};

s32 path12[] = {
	PAD_EAR_007F,
	PAD_EAR_007F,
	PAD_EAR_007F,
	-1,
};

s32 path13[] = {
	PAD_EAR_0080,
	PAD_EAR_0080,
	PAD_EAR_0080,
	-1,
};

#define init_path(pathid) \
	set_chr_dodge_rating(2, 10) \
	set_accuracy(1) \
	set_reaction_speed(20) \
	set_chr_maxdamage(CHR_SELF, 40) \
	add_health_or_armor(0) \
	set_recovery_speed(0) \
	set_shield(0) \
	assign_path(pathid) \
	start_patrol \
	set_ailist(CHR_SELF, GAILIST_UNALERTED_0004)

u8 func040c_start_path00[] = {
	init_path(0)
	endlist
};

u8 func040d_start_path01[] = {
	init_path(1)
	endlist
};

u8 func040e_start_path02[] = {
	init_path(2)
	endlist
};

u8 func040f_start_path03[] = {
	init_path(3)
	endlist
};

u8 func0410_start_path04[] = {
	init_path(4)
	endlist
};

/**
 * @unused
 *
 * The function doesn't do any checks for detecting Jo, so the guard would
 * ignore you if it were assigned.
 */
u8 func0414_walk_3_pads[] = {
	label(0x03)
		walk_to_pad(PAD_EAR_0002)

		beginloop(0x06)
			if_chr_stopped(/*goto*/ 0x2f)
		endloop(0x06)

		label(0x2f)
		walk_to_pad(PAD_EAR_0003)

		beginloop(0x04)
			if_chr_stopped(/*goto*/ 0x08)
		endloop(0x04)

		label(0x08)
		walk_to_pad(PAD_EAR_0001)

		beginloop(0x09)
			if_chr_stopped(/*goto*/ 0x0a)
		endloop(0x09)

		label(0x0a)
	goto_first(0x03)

	endlist
};

/**
 * Unused.
 */
u8 func0401_init_chr_with_flag[] = {
	set_self_chrflag(CHRCFLAG_CANCHANGEACTDURINGARGH)
	set_ailist(CHR_SELF, GAILIST_UNALERTED_0001)
	endlist
};

u8 func0405_init_scientist[] = {
	set_chr_maxdamage(CHR_SELF, 20)
	set_ailist(CHR_SELF, AILIST_SCIENTIST)
	endlist
};

u8 func0404_scientist[] = {
	set_shotlist(AILIST_SCIENTIST)
	if_chr_dead(CHR_SELF, /*goto*/ 0x2f)
	if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2f)
	if_chr_knockedout(CHR_SELF, /*goto*/ 0x2f)
	goto_next(0x06)

	label(0x2f)
	dprint 'N','I','S','D','E','A','D','\n',0,
	set_shotlist(GAILIST_IDLE)
	set_ailist(CHR_SELF, GAILIST_IDLE)

	label(0x06)
	dprint 'N','I','S','2','\n',0,
	if_just_injured(CHR_SELF, /*goto*/ 0x2f)
	goto_next(0x06)

	label(0x2f)
	beginloop(0x10)
		if_chr_stopped(/*goto*/ 0x2f)
	endloop(0x10)

	label(0x2f)
	set_ailist(CHR_SELF, AILIST_INIT_NASTY_SCIENTIST)

	label(0x06)
	stop_chr

	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_can_see_target(/*goto*/ 0x2f)
		if_distance_to_target_lt(500, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	if_stage_flag_eq(STAGEFLAG_ONE_SCIENTIST_DONE, TRUE, /*goto*/ 0x06)
	set_stage_flag(STAGEFLAG_ONE_SCIENTIST_DONE)
	goto_next(0x03)

	label(0x06)
	if_stage_flag_eq(STAGEFLAG_TWO_SCIENTISTS_DONE, TRUE, /*goto*/ 0x06)
	set_stage_flag(STAGEFLAG_TWO_SCIENTISTS_DONE)
	goto_next(0x03)

	label(0x06)
	set_stage_flag(STAGEFLAG_THREE_SCIENTISTS_DONE)
	if_stage_flag_eq(STAGEFLAG_THREE_SCIENTISTS_DONE, FALSE, /*goto*/ 0x03)
	set_ailist(CHR_SELF, AILIST_INIT_NASTY_SCIENTIST)

	label(0x03)
	if_chr_in_room(CHR_P1P2, 0x00, 0x0031, /*goto*/ 0x6a)
	if_chr_in_room(CHR_P1P2, 0x00, 0x0032, /*goto*/ 0x6a)
	if_chr_in_room(CHR_P1P2, 0x00, 0x0042, /*goto*/ 0x6d)
	if_chr_in_room(CHR_P1P2, 0x00, 0x0043, /*goto*/ 0x6d)
	goto_next(0x06)

	label(0x6a)
		chr_do_animation(ANIM_COWER_0229, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)

		beginloop(0x6b)
			if_chr_dead(0x2b, /*goto*/ 0x2f)
			if_chr_death_animation_finished(0x2b, /*goto*/ 0x2f)
			if_chr_knockedout(0x2b, /*goto*/ 0x2f)
			if_chr_stopped(/*goto*/ 0x6c)
			reloop(0x6b)

			label(0x2f)
			if_chr_dead(0x2c, /*goto*/ 0x06)
			if_chr_death_animation_finished(0x2c, /*goto*/ 0x06)
			if_chr_knockedout(0x2c, /*goto*/ 0x06)
			if_chr_stopped(/*goto*/ 0x6c)
		endloop(0x6b)

		label(0x6c)
	goto_first(0x6a)

	label(0x6d)
		chr_do_animation(ANIM_COWER_0229, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)

		beginloop(0x6e)
			if_chr_dead(0x2d, /*goto*/ 0x2f)
			if_chr_death_animation_finished(0x2d, /*goto*/ 0x2f)
			if_chr_knockedout(0x2d, /*goto*/ 0x2f)
			if_chr_stopped(/*goto*/ 0x6f)
			reloop(0x6e)

			label(0x2f)
			if_chr_dead(0x2e, /*goto*/ 0x06)
			if_chr_death_animation_finished(0x2e, /*goto*/ 0x06)
			if_chr_knockedout(0x2e, /*goto*/ 0x06)
			if_chr_stopped(/*goto*/ 0x6f)
		endloop(0x6e)

		label(0x6f)
	goto_first(0x6d)

	label(0x06)
	restart_timer
	label(0x08)
	try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)

	beginloop(0x09)
		if_sound_finished(CHANNEL_6, /*goto*/ 0x2f)
	endloop(0x09)

	label(0x2f)
	if_target_in_fov_left(10, /*goto*/ 0x06)
	if_timer_gt(60, /*goto*/ 0x06)
	goto_first(0x09)

	label(0x06)
	dprint 'T','A','L','K',' ','1','\n',0,
	say_quip(CHR_TARGET, 0x0a, 0xff, 0x00, 0xff, 0x81, 0x03, 0x08)
	restart_timer
	stop_chr

	beginloop(0x56)
		if_timer_lt(120, /*goto*/ 0x2f)
		if_target_aiming_at_me(/*goto*/ 0x06)
		label(0x2f)
	endloop(0x56)

	label(0x06)
	dprint 'T','A','L','K',' ','1','\n',0,
	say_quip(CHR_TARGET, 0x0b, 0xff, 0x00, 0xff, 0x81, 0x04, 0x09)
	restart_timer

	beginloop(0x57)
		if_timer_gt(120, /*goto*/ 0x06)
	endloop(0x57)

	label(0x06)
	label(0x0a)
	say_quip(CHR_TARGET, 0x0c, 0xff, 0x00, 0xff, 0x81, 0x05, 0x08)
	restart_timer
	chr_do_animation(ANIM_SURRENDER_002E, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)

	beginloop(0x0b)
		if_target_in_fov_left(10, /*goto*/ 0x06)
		if_timer_gt(90, /*goto*/ 0x06)
	endloop(0x0b)

	label(0x06)
	if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
	if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
	set_pad_preset_to_investigation_terminal(OBJ_GOODTERM3)
	goto_next(0x12)

	label(0x06)
	set_pad_preset_to_investigation_terminal(OBJ_GOODTERM1)
	goto_next(0x12)

	label(0x2f)
	set_pad_preset_to_investigation_terminal(OBJ_GOODTERM2)
	label(0x12)
	go_to_target_pad(GOPOSFLAG_JOG)

	beginloop(0x0c)
		if_chr_stopped(/*goto*/ 0x06)
	endloop(0x0c)

	label(0x06)
	if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
	if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
	if_object_in_good_condition(OBJ_GOODTERM3, /*goto*/ 0x19)
	say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
	show_hudmsg_top_middle(CHR_TARGET, L_EAR_044, COLOR_00_GREEN) // "It appears someone has broken my PC."
	goto_next(0x0e)

	label(0x19)
	if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, FALSE, /*goto*/ 0x15)
	say_quip(CHR_TARGET, 0x0f, 0xff, 0x00, 0xff, 0x81, 0x08, 0x08)
	goto_next(0x0e)

	label(0x15)
	set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT3)
	say_quip(CHR_TARGET, 0x0d, 0xff, 0x00, 0xff, 0x81, 0x06, 0x08)
	assign_sound(SFX_01C3, CHANNEL_5)
	set_object_sound_playing(CHANNEL_5, OBJ_GOODTERM3, TRUE)
	goto_next(0x0f)

	label(0x06)
	if_object_in_good_condition(OBJ_GOODTERM1, /*goto*/ 0x19)
	say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
	goto_next(0x0e)

	label(0x19)
	if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, FALSE, /*goto*/ 0x16)
	say_quip(CHR_TARGET, 0x0f, 0xff, 0x00, 0xff, 0x81, 0x08, 0x08)
	goto_next(0x0e)

	label(0x16)
	set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT1)
	say_quip(CHR_TARGET, 0x0d, 0xff, 0x00, 0xff, 0x81, 0x06, 0x08)
	assign_sound(SFX_01C3, CHANNEL_5)
	set_object_sound_playing(CHANNEL_5, OBJ_GOODTERM1, TRUE)
	goto_next(0x0f)

	label(0x2f)
	if_object_in_good_condition(OBJ_GOODTERM1, /*goto*/ 0x19)
	say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
	goto_next(0x0e)

	label(0x19)
	if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, FALSE, /*goto*/ 0x17)
	say_quip(CHR_TARGET, 0x0f, 0xff, 0x00, 0xff, 0x81, 0x08, 0x08)
	goto_next(0x0e)

	label(0x17)
	set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT2)
	say_quip(CHR_TARGET, 0x0d, 0xff, 0x00, 0xff, 0x81, 0x06, 0x08)
	assign_sound(SFX_01C3, CHANNEL_5)
	set_object_sound_playing(CHANNEL_5, OBJ_GOODTERM2, TRUE)
	goto_next(0x0f)

	label(0x0f)
	show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
	speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
	chr_do_animation(ANIM_STANDING_TYPE_ONE_HAND, 0, 193, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)

	beginloop(0x0d)
		if_chr_stopped(/*goto*/ 0x06)
	endloop(0x0d)

	label(0x06)
	show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
	stop_chr

	beginloop(0x0e)
	endloop(0x0e)

	endlist
};

u8 func0407_init_nasty_scientist[] = {
	set_ailist(CHR_SELF, AILIST_NASTY_SCIENTIST)
	endlist
};

u8 func0406_nasty_scientist[] = {
	set_shotlist(AILIST_NASTY_SCIENTIST)
	dprint 'N','A','S','T','Y','1','\n',0,
	if_chr_dead(CHR_SELF, /*goto*/ 0x2f)
	if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2f)
	if_chr_knockedout(CHR_SELF, /*goto*/ 0x2f)
	goto_next(0x06)

	label(0x2f)
	dprint 'N','A','S','T','Y',' ','D','E','A','D','\n',0,
	set_shotlist(GAILIST_IDLE)
	set_ailist(CHR_SELF, GAILIST_IDLE)

	label(0x06)
	dprint 'N','A','S','T','Y','2','\n',0,
	if_just_injured(CHR_SELF, /*goto*/ 0x2f)
	if_num_times_shot_lt(1, /*goto*/ 0x06)
	label(0x2f)
	play_sound(MP3_028C, CHANNEL_7)

	beginloop(0x10)
		if_chr_stopped(/*goto*/ 0x06)
	endloop(0x10)

	label(0x06)
	if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
	if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
	set_pad_preset_to_investigation_terminal(OBJ_ALARMTERM3)
	goto_next(0x12)

	label(0x06)
	set_pad_preset_to_investigation_terminal(OBJ_ALARMTERM1)
	goto_next(0x12)

	label(0x2f)
	set_pad_preset_to_investigation_terminal(OBJ_ALARMTERM2)
	label(0x12)
	if_num_times_shot_lt(1, /*goto*/ 0x13)
	go_to_target_pad(GOPOSFLAG_JOG)
	goto_next(0x55)

	label(0x13)
	label(0x08)
	restart_timer
	try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)

	beginloop(0x09)
		if_sound_finished(CHANNEL_6, /*goto*/ 0x2f)
		reloop(0x09)

		label(0x2f)
		if_target_in_fov_left(10, /*goto*/ 0x06)
		if_timer_gt(60, /*goto*/ 0x06)
	endloop(0x09)

	label(0x06)
	say_quip(CHR_TARGET, 0x0a, 0xff, 0x00, 0xff, 0x81, 0x03, 0x08)
	restart_timer

	beginloop(0x56)
		if_timer_gt(120, /*goto*/ 0x06)
	endloop(0x56)

	label(0x06)
	dprint 'T','A','L','K',' ','1','\n',0,
	say_quip(CHR_TARGET, 0x0b, 0xff, 0x00, 0xff, 0x81, 0x04, 0x09)
	restart_timer

	beginloop(0x57)
		if_timer_gt(120, /*goto*/ 0x0a)
	endloop(0x57)

	label(0x0a)
	restart_timer
	stop_chr
	say_quip(CHR_TARGET, 0x0c, 0xff, 0x00, 0xff, 0x81, 0x05, 0x08)

	beginloop(0x0b)
		if_timer_gt(90, /*goto*/ 0x55)
	endloop(0x0b)

	label(0x55)
	go_to_target_pad(GOPOSFLAG_JOG)

	beginloop(0x0c)
		if_chr_stopped(/*goto*/ 0x06)
	endloop(0x0c)

	label(0x06)
	if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
	if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
	if_object_in_good_condition(OBJ_ALARMTERM3, /*goto*/ 0x30)
	goto_next(0x11)

	label(0x30)
	set_stage_flag(STAGEFLAG_ALARM3_ACTIVE)
	assign_sound(SFX_TYPING_8118, CHANNEL_6)
	set_object_sound_playing(CHANNEL_6, OBJ_GOODTERM3, TRUE)
	goto_next(0x0f)

	label(0x06)
	if_object_in_good_condition(OBJ_ALARMTERM1, /*goto*/ 0x30)
	goto_next(0x11)

	label(0x30)
	set_stage_flag(STAGEFLAG_ALARM1_ACTIVE)
	assign_sound(SFX_TYPING_8118, CHANNEL_6)
	set_object_sound_playing(CHANNEL_6, OBJ_GOODTERM1, TRUE)
	goto_next(0x0f)

	label(0x2f)
	if_object_in_good_condition(OBJ_ALARMTERM2, /*goto*/ 0x30)
	goto_next(0x11)

	label(0x30)
	set_stage_flag(STAGEFLAG_ALARM2_ACTIVE)
	assign_sound(SFX_TYPING_8118, CHANNEL_6)
	set_object_sound_playing(CHANNEL_6, OBJ_GOODTERM2, TRUE)
	goto_next(0x0f)

	label(0x11)
	say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
	goto_next(0x78)

	label(0x0f)
	speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
	say_quip(CHR_TARGET, 0x0e, 0xff, 0x00, 0xff, 0x81, 0x07, 0x08)
	chr_do_animation(ANIM_STANDING_TYPE_ONE_HAND, 0, 193, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)

	beginloop(0x0d)
		if_chr_stopped(/*goto*/ 0x30)
	endloop(0x0d)

	label(0x30)
	activate_alarm
	label(0x78)
	label(0x06)
	stop_chr

	beginloop(0x0e)
	endloop(0x0e)

	endlist
};

u8 func1009_weaponscache[] = {
	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_chr_activated_object(CHR_TARGET, OBJ_CACHETERMINAL, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	if_chr_has_hiddenflag(CHR_BOND, CHRHFLAG_DETECTED, /*goto*/ 0x2f)
	show_hudmsg(CHR_TARGET, L_EAR_098) // "Secret weapons compartment opened."
	play_sound(SFX_00F7, -1)
	assign_sound(SFX_043B, CHANNEL_5)
	set_object_sound_playing(CHANNEL_5, OBJ_CMP150_1, TRUE)
	disable_object(OBJ_CACHEDOOR1)
	disable_object(OBJ_CACHEDOOR2)
	unset_object_flag(OBJ_CMP150_1, OBJFLAG_UNCOLLECTABLE)
	unset_object_flag2(OBJ_CMP150_1, OBJFLAG2_INVISIBLE)
	unset_object_flag(OBJ_CMP150_2, OBJFLAG_UNCOLLECTABLE)
	unset_object_flag2(OBJ_CMP150_2, OBJFLAG2_INVISIBLE)
	set_object_flag2(OBJ_CMP150_1, OBJFLAG2_PICKUPWITHOUTLOS)
	set_object_flag2(OBJ_CMP150_2, OBJFLAG2_PICKUPWITHOUTLOS)
	set_ailist(CHR_SELF, GAILIST_IDLE)

	label(0x2f)
	show_hudmsg(CHR_TARGET, L_EAR_099) // "Enemy detected - weapon cache locked."
	play_sound(SFX_00F7, -1)
	unset_stage_flag(STAGEFLAG_BOT_ACTIVE)
	unset_stage_flag(STAGEFLAG_BOT_REPROGRAMMED)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

/**
 * The second terminal you're supposed to activate.
 *
 * If turning the bot on without reprogramming it first, the bot will run
 * without a program where it moves in a small circle at slow speed.
 *
 * If turning the bot on after reprogramming it will start the maintenance
 * cycle (lasers).
 */
u8 func1002_bot_activation_terminal[] = {
	if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
	goto_next(0x04)

	label(0x2f)
	set_ailist(CHR_SELF, GAILIST_IDLE)

	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_chr_activated_object(CHR_TARGET, OBJ_BOT_ACTIVATION_TERMINAL, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_objective_failed(1, /*goto*/ 0x0b)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x08)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE, TRUE, /*goto*/ 0x0a)
		if_stage_flag_eq(STAGEFLAG_BOT_REPROGRAMMED, TRUE, /*goto*/ 0x2f)

		// Activating prior to reprogramming
		play_sound(SFX_01CA, -1)
		assign_sound(SFX_01C5, CHANNEL_3)
		play_repeating_sound_from_object(CHANNEL_3, OBJ_PURPLEBOT, 1, 600, 800)
		show_hudmsg(CHR_TARGET, L_EAR_015) // "Maintenance robots activated."
		set_stage_flag(STAGEFLAG_BOT_ACTIVE)
		set_stage_flag(STAGEFLAG_BOT_ACTIVE_NOPROGRAM)
		reloop(0x04)

		// Activating after reprogramming
		label(0x2f)
		show_hudmsg(CHR_TARGET, L_EAR_015) // "Maintenance robots activated."
		set_stage_flag(STAGEFLAG_BOT_ACTIVE)
		yield
		play_sound(SFX_00F7, -1)
		show_hudmsg(CHR_TARGET, L_EAR_018) // "Maintenance cycle activated."
		set_stage_flag(STAGEFLAG_BOT_ACTIVE_MAINTENANCE)
		reloop(0x04)

		// Attempting to deactivate while bot reprogrammed and running
		label(0x08)
		play_sound(SFX_00F7, -1)
		show_hudmsg(CHR_TARGET, L_EAR_020) // "Operation not allowed - robots busy."
		restart_timer

		beginloop(0x09)
			if_timer_gt(120, /*goto*/ 0x06)
		endloop(0x09)

		label(0x06)
		reloop(0x04)

		// Deactivating
		label(0x0a)
		show_hudmsg(CHR_TARGET, L_EAR_021) // "Maintenance robots deactivated."
		unset_stage_flag(STAGEFLAG_BOT_ACTIVE)
		unset_stage_flag(STAGEFLAG_BOT_ACTIVE_CLEANING)
		unset_stage_flag(STAGEFLAG_BOT_ACTIVE_NOPROGRAM)
		play_sound(SFX_01C9, -1)
		mute_channel(CHANNEL_3)
		reloop(0x04)

		label(0x0b)
		play_sound(SFX_00F7, -1)
		show_hudmsg(CHR_TARGET, L_EAR_023) // "Maintenance robot system offline."
	endloop(0x04)

	endlist
};

/**
 * The first terminal you're supposed to activate.
 *
 * If activated while the bot is offline, the bot is reprogrammed with the
 * maintenance cycle (ie. lasers) but still needs to be started.
 *
 * If activated while the bot is running with no program, the bot is
 * reprogrammed with the cleaning cycle (up and down the room at medium speed).
 */
u8 func1003_bot_programming_terminal[] = {
	if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
	goto_next(0x04)

	label(0x2f)
	set_ailist(CHR_SELF, GAILIST_IDLE)

	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_chr_activated_object(CHR_TARGET, OBJ_BOT_PROGRAMMING_TERMINAL, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_objective_failed(1, /*goto*/ 0x0b)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x09)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x09)

		// Reprogramming
		play_sound(SFX_00F7, -1)
		show_hudmsg(CHR_TARGET, L_EAR_016) // "Maintenance robots reprogrammed."
		set_stage_flag(STAGEFLAG_BOT_REPROGRAMMED)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE, TRUE, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		yield
		play_sound(SFX_00F7, -1)
		show_hudmsg(CHR_TARGET, L_EAR_019) // "Routine cleaning cycle activated."
		set_stage_flag(STAGEFLAG_BOT_ACTIVE_CLEANING)
		restart_timer

		beginloop(0x08)
			if_timer_gt(300, /*goto*/ 0x06)
		endloop(0x08)

		label(0x06)
		reloop(0x04)

		// Attempting to reprogram while bot already reprogrammed and running
		label(0x09)
		play_sound(SFX_00F7, -1)
		show_hudmsg(CHR_TARGET, L_EAR_020) // "Operation not allowed - robots busy."
		restart_timer

		beginloop(0x0a)
			if_timer_gt(120, /*goto*/ 0x06)
		endloop(0x0a)

		label(0x06)
		reloop(0x04)

		label(0x0b)
		show_hudmsg(CHR_TARGET, L_EAR_023) // "Maintenance robot system offline."
	endloop(0x04)

	endlist
};

u8 func1004_check_items_collected[] = {
	yield
	set_object_flag3(OBJ_K7AVENGER, OBJFLAG3_PLAYERUNDROPPABLE)
	set_object_flag3(OBJ_NIGHTVISION, OBJFLAG3_PLAYERUNDROPPABLE)
	set_object_flag3(OBJ_SHIELD, OBJFLAG3_PLAYERUNDROPPABLE)

	beginloop(0x04)
		if_chr_has_object(CHR_BOND, OBJ_K7AVENGER, /*goto*/ 0x2f)
		if_chr_has_object(CHR_COOP, OBJ_K7AVENGER, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_chr_has_object(CHR_BOND, OBJ_NIGHTVISION, /*goto*/ 0x2f)
		if_chr_has_object(CHR_COOP, OBJ_NIGHTVISION, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_chr_has_object(CHR_BOND, OBJ_SHIELD, /*goto*/ 0x2f)
		if_chr_has_object(CHR_COOP, OBJ_SHIELD, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	yield
	set_stage_flag(STAGEFLAG_ALL_ITEMS_COLLECTED)
	unset_stage_flag(STAGEFLAG_ITEMS_UNCOLLECTABLE)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1018_item_pickup_messages[] = {
	if_difficulty_lt(DIFF_PA, /*goto*/ 0x0d)

	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		if_stage_flag_eq(STAGEFLAG_HAS_K7AVENGER, TRUE, /*goto*/ 0x2f)
		if_chr_has_object(CHR_P1P2, OBJ_K7AVENGER, /*goto*/ 0x06)
		goto_next(0x2f)

		label(0x06)
		show_hudmsg(CHR_P1P2, L_EAR_086) // "Experimental item 1 acquired."
		set_stage_flag(STAGEFLAG_HAS_K7AVENGER)
		label(0x2f)
		if_stage_flag_eq(STAGEFLAG_HAS_NIGHTVISION, TRUE, /*goto*/ 0x2f)
		if_chr_has_object(CHR_P1P2, OBJ_NIGHTVISION, /*goto*/ 0x06)
		goto_next(0x2f)

		label(0x06)
		show_hudmsg(CHR_P1P2, L_EAR_087) // "Experimental item 2 acquired."
		set_stage_flag(STAGEFLAG_HAS_NIGHTVISION)
		label(0x2f)
		if_stage_flag_eq(STAGEFLAG_HAS_SHIELD, TRUE, /*goto*/ 0x2f)
		if_chr_has_object(CHR_P1P2, OBJ_SHIELD, /*goto*/ 0x06)
		goto_next(0x2f)

		label(0x06)
		show_hudmsg(CHR_P1P2, L_EAR_088) // "Experimental item 3 acquired."
		set_stage_flag(STAGEFLAG_HAS_SHIELD)
		label(0x2f)
	endloop(0x04)

	label(0x0d)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1005_check_unacceptable_casualties[] = {
	beginloop(0x04)
		if_chr_dead(0x35, /*goto*/ 0x08)
		if_chr_death_animation_finished(0x35, /*goto*/ 0x08)
		if_chr_dead(0x36, /*goto*/ 0x09)
		if_chr_death_animation_finished(0x36, /*goto*/ 0x09)
		if_chr_dead(0x37, /*goto*/ 0x0a)
		if_chr_death_animation_finished(0x37, /*goto*/ 0x0a)
		if_chr_dead(0x38, /*goto*/ 0x0a)
		if_chr_death_animation_finished(0x38, /*goto*/ 0x0a)
		reloop(0x04)

		label(0x08)
		if_difficulty_lt(DIFF_PA, /*goto*/ 0x2f)
		goto_next(0x0f)

		if_chr_dead(0x36, /*goto*/ 0x0b)
		if_chr_death_animation_finished(0x36, /*goto*/ 0x0b)
		if_chr_dead(0x37, /*goto*/ 0x0c)
		if_chr_death_animation_finished(0x37, /*goto*/ 0x0c)
		label(0x0b)
		if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
		goto_next(0x0f)

		label(0x2f)
		if_chr_dead(0x37, /*goto*/ 0x0f)
		if_chr_death_animation_finished(0x37, /*goto*/ 0x0f)
		reloop(0x04)

		label(0x0c)
		if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
		goto_next(0x0f)
		label(0x2f)
		reloop(0x04)

		label(0x09)
		if_difficulty_lt(DIFF_PA, /*goto*/ 0x2f)
		goto_next(0x0f)
		label(0x2f)
		if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
		if_chr_dead(0x37, /*goto*/ 0x0f)
		if_chr_death_animation_finished(0x37, /*goto*/ 0x0f)
		label(0x2f)
	endloop(0x04)

	label(0x0a)
	if_difficulty_lt(DIFF_PA, /*goto*/ 0x2f)
	goto_next(0x0f)

	label(0x2f)
	label(0x0f)
	set_stage_flag(STAGEFLAG_UNACCEPTABLE_CASUALTIES)
	show_hudmsg(CHR_BOND, L_EAR_026) // "Unacceptable scientist casualties."
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1006_terminal_activation[] = {
	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_chr_activated_object(CHR_TARGET, OBJ_GOODTERM1, /*goto*/ 0x08)
		if_chr_activated_object(CHR_TARGET, OBJ_ALARMTERM1, /*goto*/ 0x09)
		if_chr_activated_object(CHR_TARGET, OBJ_GOODTERM2, /*goto*/ 0x0d)
		if_chr_activated_object(CHR_TARGET, OBJ_ALARMTERM2, /*goto*/ 0x0b)
		if_chr_activated_object(CHR_TARGET, OBJ_GOODTERM3, /*goto*/ 0x0f)
		if_chr_activated_object(CHR_TARGET, OBJ_ALARMTERM3, /*goto*/ 0x0c)
		if_chr_activated_object(CHR_TARGET, 0x0b, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x0c, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x0d, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x0e, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x10, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x11, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x12, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x13, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x15, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x16, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x17, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x18, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x1a, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x1b, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x1c, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x1d, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x1e, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x1f, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x20, /*goto*/ 0x2f)
		if_chr_activated_object(CHR_TARGET, 0x21, /*goto*/ 0x2f)
		endloop(0x04)

		// Inactive terminal
		label(0x2f)
		speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
		show_hudmsg(CHR_TARGET, L_EAR_027) // "Terminal is not active."
		restart_timer

		beginloop(0x56)
			if_timer_gt(120, /*goto*/ 0x2f)
		endloop(0x56)

		label(0x2f)
		reloop(0x04)

		// Good terminal 0x07
		label(0x08)
		speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
		if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, FALSE, /*goto*/ 0x2f)
		restart_timer

		beginloop(0x56)
			if_timer_gt(60, /*goto*/ 0x06)
		endloop(0x56)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_042) // "Experiment already powered down."
		reloop(0x04)

		label(0x2f)
		show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
		assign_sound(SFX_01C3, CHANNEL_5)
		set_object_sound_playing(CHANNEL_5, OBJ_GOODTERM1, TRUE)
		restart_timer

		beginloop(0x0a)
			if_timer_gt(180, /*goto*/ 0x06)
		endloop(0x0a)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
		set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT1)
		reloop(0x04)

		// Good terminal 0x08
		label(0x0d)
		speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
		if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, FALSE, /*goto*/ 0x2f)
		restart_timer

		beginloop(0x57)
			if_timer_gt(60, /*goto*/ 0x06)
		endloop(0x57)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_042) // "Experiment already powered down."
		goto_first(0x04)

		label(0x2f)
		show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
		assign_sound(SFX_01C3, CHANNEL_5)
		set_object_sound_playing(CHANNEL_5, OBJ_GOODTERM2, TRUE)
		restart_timer

		beginloop(0x0e)
			if_timer_gt(180, /*goto*/ 0x06)
		endloop(0x0e)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
		set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT2)
		reloop(0x04)

		// Good terminal 0x09
		label(0x0f)
		speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
		if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, FALSE, /*goto*/ 0x2f)
		restart_timer

		beginloop(0x58)
			if_timer_gt(60, /*goto*/ 0x06)
		endloop(0x58)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_042) // "Experiment already powered down."
		reloop(0x04)

		label(0x2f)
		show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
		assign_sound(SFX_01C3, CHANNEL_5)
		set_object_sound_playing(CHANNEL_5, OBJ_GOODTERM3, TRUE)
		restart_timer

		beginloop(0x10)
			if_timer_gt(180, /*goto*/ 0x06)
		endloop(0x10)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
		set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT3)
		reloop(0x04)

		// Alarm terminal 0x0f
		label(0x09)
		if_alarm_active(/*goto*/ 0x06)
		speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
		show_hudmsg(CHR_TARGET, L_EAR_030) // "Alarm activated."
		set_stage_flag(STAGEFLAG_ALARM1_ACTIVE)
		activate_alarm
		reloop(0x04)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_031) // "Alarm deactivated."
		unset_stage_flag(STAGEFLAG_ALARM1_ACTIVE)
		deactivate_alarm
		reloop(0x04)

		// Alarm terminal 0x14
		label(0x0b)
		if_alarm_active(/*goto*/ 0x06)
		speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
		show_hudmsg(CHR_TARGET, L_EAR_030) // "Alarm activated."
		set_stage_flag(STAGEFLAG_ALARM2_ACTIVE)
		activate_alarm
		reloop(0x04)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_031) // "Alarm deactivated."
		unset_stage_flag(STAGEFLAG_ALARM2_ACTIVE)
		deactivate_alarm
		reloop(0x04)

		// Alarm terminal 0x19
		label(0x0c)
		if_alarm_active(/*goto*/ 0x06)
		speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
		show_hudmsg(CHR_TARGET, L_EAR_030) // "Alarm activated."
		set_stage_flag(STAGEFLAG_ALARM3_ACTIVE)
		activate_alarm
		reloop(0x04)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_031) // "Alarm deactivated."
		unset_stage_flag(STAGEFLAG_ALARM3_ACTIVE)
		deactivate_alarm
		reloop(0x04)

		label(0x2f)
	endloop(0x04)

	endlist
};

u8 func1007_uplink[] = {
	beginloop(0x04)
		if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x30)
		goto_next(0x0d)

		label(0x30)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_chr_activated_object(CHR_TARGET, OBJ_UPLINKPC, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_stage_flag_eq(STAGEFLAG_UPLINK_FINISHED, FALSE, /*goto*/ 0x06)

		// Activating a second time
		speak(CHR_TARGET, 0xffff, SFX_8116, CHANNEL_9, COLOR_00_GREEN) // unknown text
		show_hudmsg(CHR_TARGET, L_EAR_041) // "Security door already unlocked."
		reloop(0x04)

		label(0x06)
		if_chr_weapon_equipped(CHR_TARGET, WEAPON_DATAUPLINK, /*goto*/ 0x2f)

		// Activated computer without uplink
		speak(CHR_TARGET, 0xffff, SFX_8116, CHANNEL_9, COLOR_00_GREEN) // unknown text
		show_hudmsg(CHR_TARGET, L_EAR_036) // "ACCESS DENIED - security code required."
		reloop(0x04)

		// Uplinking
		label(0x2f)
		show_hudmsg(CHR_TARGET, L_EAR_060) // "Connection established."
		restart_timer

		// First second of uplinking
		beginloop(0x08)
			if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x30)
			goto_next(0x0d)

			label(0x30)
			if_timer_gt(60, /*goto*/ 0x06)
			if_chr_distance_to_pad_gt(CHR_TARGET, 200, PAD_EAR_025A, /*goto*/ 0x09)
			if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
			if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, FALSE, /*goto*/ 0x0b)
			if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, FALSE, /*goto*/ 0x0b)
			if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, FALSE, /*goto*/ 0x0b)
			label(0x2f)
			if_chr_weapon_equipped(CHR_TARGET, WEAPON_DATAUPLINK, /*goto*/ 0x2f)
			goto_next(0x09)
			label(0x2f)
		endloop(0x08)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_037) // "Searching for password."
		restart_timer
		set_stage_flag(STAGEFLAG_UPLINK_SEARCHING)
		assign_sound(SFX_01BF, CHANNEL_5)
		set_object_sound_playing(CHANNEL_5, OBJ_UPLINKPC, TRUE)

		beginloop(0x14)
			if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x30)
			goto_next(0x0d)

			label(0x30)
			if_timer_gt(400, /*goto*/ 0x06)
			if_chr_distance_to_pad_gt(CHR_TARGET, 200, PAD_EAR_025A, /*goto*/ 0x09)
			if_chr_weapon_equipped(CHR_TARGET, WEAPON_DATAUPLINK, /*goto*/ 0x2f)
			goto_next(0x09)
			label(0x2f)
		endloop(0x14)

		label(0x06)
		mute_channel(CHANNEL_5)
		assign_sound(SFX_01C1, CHANNEL_6)
		set_object_sound_playing(CHANNEL_6, OBJ_UPLINKPC, TRUE)
		show_hudmsg(CHR_TARGET, L_EAR_039) // "Password located - bypassing lock."
		yield
		show_hudmsg(CHR_TARGET, L_EAR_017) // "Security doors unlocked."
		set_stage_flag(STAGEFLAG_UPLINK_FINISHED)
		unlock_door(OBJ_UPLINKDOOR, 0x02)

		beginloop(0x15)
			if_timer_gt(90, /*goto*/ 0x06)
		endloop(0x15)

		label(0x06)
		assign_sound(SFX_043B, CHANNEL_6)
		set_object_sound_playing(CHANNEL_6, 0x22, TRUE)
		reloop(0x04)

		// Moved away from PC or switched weapon
		label(0x09)
		show_hudmsg(CHR_TARGET, L_EAR_040) // "Contact broken - reestablish link."
		mute_channel(CHANNEL_5)
		mute_channel(CHANNEL_6)
		assign_sound(SFX_01C0, CHANNEL_6)
		set_object_sound_playing(CHANNEL_6, OBJ_UPLINKPC, TRUE)
		restart_timer

		beginloop(0x16)
			if_timer_gt(120, /*goto*/ 0x06)
		endloop(0x16)

		label(0x06)
		mute_channel(CHANNEL_6)
		reloop(0x04)

		label(0x0b)
		restart_timer

		beginloop(0x0c)
			if_timer_gt(60, /*goto*/ 0x06)
		endloop(0x0c)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_085) // "Connection broken - experiments still active."
		mute_channel(CHANNEL_5)
		mute_channel(CHANNEL_6)
		assign_sound(SFX_01C0, CHANNEL_6)
		set_object_sound_playing(CHANNEL_6, OBJ_UPLINKPC, TRUE)
		restart_timer

		beginloop(0x17)
			if_timer_gt(120, /*goto*/ 0x06)
		endloop(0x17)

		label(0x06)
		mute_channel(CHANNEL_6)
	endloop(0x04)

	label(0x0d)
	mute_channel(CHANNEL_5)
	mute_channel(CHANNEL_6)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1008_check_bot_terminals_destroyed[] = {
	beginloop(0x04)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x08)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x2f)
		if_object_in_good_condition(OBJ_BOT_ACTIVATION_TERMINAL, /*goto*/ 0x2f)
		set_stage_flag(STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED)
		if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
		show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
		label(0x2f)
		if_stage_flag_eq(STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x2f)
		if_object_in_good_condition(OBJ_BOT_PROGRAMMING_TERMINAL, /*goto*/ 0x2f)
		set_stage_flag(STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED)
		if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
		show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
		label(0x2f)
	endloop(0x04)

	label(0x08)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1001_objectives_failed_msg[] = {
	yield
	// These are scientist chrs
	set_chr_chrflag(0x35, CHRCFLAG_KEEPCORPSEKO)
	set_chr_chrflag(0x36, CHRCFLAG_KEEPCORPSEKO)
	set_chr_chrflag(0x37, CHRCFLAG_KEEPCORPSEKO)
	set_chr_chrflag(0x38, CHRCFLAG_KEEPCORPSEKO)
	set_ailist(CHR_SELF, GAILIST_SHOW_OBJ_FAILED_MSG)
	endlist
};

u8 func100a_spawn_alarm_responders[] = {
	beginloop(0x04)
		if_alarm_active(/*goto*/ 0x06)
		reloop(0x04)

		label(0x06)
		if_stage_flag_eq(STAGEFLAG_ALARM_RESPONDERS_SPAWNED, TRUE, /*goto*/ 0x0c)
		set_stage_flag(STAGEFLAG_ALARM_RESPONDERS_SPAWNED)
		restart_timer

		beginloop(0x56)
			try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_BASICGUARD, /*goto*/ 0x08)
		endloop(0x56)

		beginloop(0x08)
			if_timer_gt(30, /*goto*/ 0x06)
		endloop(0x08)

		label(0x06)
		beginloop(0x57)
			try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_BASICGUARD, /*goto*/ 0x09)
		endloop(0x57)

		beginloop(0x09)
			if_timer_gt(30, /*goto*/ 0x06)
		endloop(0x09)

		label(0x06)
		beginloop(0x58)
			try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_BASICGUARD, /*goto*/ 0x0a)
		endloop(0x58)

		beginloop(0x0a)
			if_timer_gt(30, /*goto*/ 0x06)
		endloop(0x0a)

		label(0x06)
		beginloop(0x59)
			try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_BASICGUARD, /*goto*/ 0x0b)
		endloop(0x59)

		beginloop(0x0b)
			if_timer_gt(30, /*goto*/ 0x0c)
		endloop(0x0b)

		set_stage_flag(STAGEFLAG_ALARM_RESPONDERS_SPAWNED)
		label(0x0c)
	endloop(0x04)

	endlist
};

u8 func0408_alarm_responder[] = {
	set_self_flag_bankx(CHRFLAG1_NOIDLEANIMS, BANK_1)
	if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
	set_accuracy(20)
	goto_next(0x06)

	label(0x2f)
	set_accuracy(10)

	label(0x06)
	try_inherit_properties(0x19, /*goto*/ 0x06)
	label(0x06)
	try_equip_weapon(MODEL_CHRCMP150, WEAPON_CMP150, 0x00000000, /*goto*/ 0x06)
	label(0x06)
	set_chr_team(CHR_SELF, TEAM_ENEMY)
	set_squadron(SQUADRON_09)
	set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
	set_self_flag_bankx(CHRFLAG0_00008000, BANK_0)
	set_alertness(90)
	set_self_chrflag(CHRCFLAG_CANCHANGEACTDURINGARGH)

	// Run to scientist based on which alarm was triggered
	if_stage_flag_eq(STAGEFLAG_ALARM1_ACTIVE, TRUE, /*goto*/ 0x08)
	if_stage_flag_eq(STAGEFLAG_ALARM2_ACTIVE, TRUE, /*goto*/ 0x09)
	try_run_to_chr(0x37, /*goto*/ 0x06)
	goto_next(0x06)

	label(0x08)
	try_run_to_chr(0x35, /*goto*/ 0x06)
	goto_next(0x06)

	label(0x09)
	try_run_to_chr(0x36, /*goto*/ 0x06)
	goto_next(0x06)

	label(0x06)
	rebuild_teams
	rebuild_squadrons
	set_ailist(CHR_SELF, GAILIST_UNALERTED_0001)
	endlist
};

u8 func100b_check_uplink_pc_destroyed[] = {
	beginloop(0x04)
		if_stage_flag_eq(STAGEFLAG_UPLINK_FINISHED, TRUE, /*goto*/ 0x08)
		if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x2f)
		set_stage_flag(STAGEFLAG_UPLINKPC_DESTROYED)
		show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
		goto_next(0x08)
		label(0x2f)
	endloop(0x04)

	label(0x08)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func0411_yellowbot[] = {
	dprint 'h','o','v','\n',0,
	label(0x03)
		begin_hovercar_path(0x05)
		set_vehicle_speed(512, 120)

		beginloop(0x04)
			if_hoverbot_next_step(OPERATOR_GREATER_THAN, 10, /*goto*/ 0x06)
		endloop(0x04)

		label(0x06)
		begin_hovercar_path(0x06)
		set_vehicle_speed(512, 120)

		beginloop(0x08)
			if_hoverbot_next_step(OPERATOR_GREATER_THAN, 8, /*goto*/ 0x06)
		endloop(0x08)

		label(0x06)
	goto_first(0x03)

	endlist
};

u8 func0412_purplebot_programs[] = {
	dprint 'h','o','v','\n',0,
	if_difficulty_gt(DIFF_A, /*goto*/ 0x04)

	// Agent
	dprint 'm','o','v','\n',0,
	move_object_to_pad(OBJ_PURPLEBOT, PAD_EAR_00BE)
	goto_next(0x14)

	// SA or PA
	beginloop(0x04)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, TRUE, /*goto*/ 0x0a)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x0c)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x08)
	endloop(0x04)

	// Cleaning cycle (up and down the terminal room at medium speed)
	label(0x08)
		begin_hovercar_path(0x07)
		set_vehicle_speed(512, 120)

		beginloop(0x09)
			if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, FALSE, /*goto*/ 0x0e)
			if_hoverbot_next_step(OPERATOR_GREATER_THAN, 1, /*goto*/ 0x06)
		endloop(0x09)

		label(0x06)
	goto_first(0x08)

	// No program (small circles at low speed)
	label(0x0a)
		begin_hovercar_path(0x08)
		set_vehicle_speed(128, 120)

		beginloop(0x0b)
			if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, FALSE, /*goto*/ 0x0e)
			if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x10)
			if_hoverbot_next_step(OPERATOR_GREATER_THAN, 1, /*goto*/ 0x06)
		endloop(0x0b)

		label(0x06)
	goto_first(0x0a)

	// Maintenance cycle - on route to lasers (high speed)
	label(0x0c)
	begin_hovercar_path(0x09)
	set_vehicle_speed(768, 120)

	beginloop(0x0d)
		if_hoverbot_next_step(OPERATOR_GREATER_THAN, 24, /*goto*/ 0x06)
	endloop(0x0d)

	label(0x14)
	label(0x06)
	set_ailist(CHR_SELF, AILIST_PURPLEBOT_AT_LASERS)

	// Returning to offline
	label(0x0e)
	begin_hovercar_path(0x0b)
	set_vehicle_speed(512, 120)
	unset_stage_flag(STAGEFLAG_BOT_ACTIVE_CLEANING)
	unset_stage_flag(STAGEFLAG_BOT_REPROGRAMMED)
	unset_stage_flag(STAGEFLAG_BOT_ACTIVE)

	beginloop(0x0f)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, TRUE, /*goto*/ 0x11)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x12)
		if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x10)
		if_hoverbot_next_step(OPERATOR_GREATER_THAN, 1, /*goto*/ 0x06)
	endloop(0x0f)

	label(0x06)
	set_vehicle_speed(0, 1)
	goto_first(0x04)

	label(0x11)
	goto_first(0x0a)

	label(0x12)
	goto_first(0x0a)

	label(0x10)
	goto_first(0x08)

	endlist
};

u8 func0413_purplebot_at_lasers[] = {
#if VERSION < VERSION_NTSC_1_0
	open_door(0x45)
#endif
	label(0x03)
	begin_hovercar_path(0x0a)
	set_vehicle_speed(512, 120)

	beginloop(0x13)
	endloop(0x13)

	endlist
};

u8 func100c_shuffle_terminals[] = {
	shuffle_investigation_terminals(OBJ_GOODTERM1, OBJ_ALARMTERM1, 0x1e, 0x1f, 0x20, 0x21)
	shuffle_investigation_terminals(OBJ_GOODTERM2, OBJ_ALARMTERM2, 0x1a, 0x1b, 0x1c, 0x1d)
	shuffle_investigation_terminals(OBJ_GOODTERM3, OBJ_ALARMTERM3, 0x15, 0x16, 0x17, 0x18)
	yield
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func100e_experiment_terminals_destroyed[] = {
	beginloop(0x04)
		if_object_in_good_condition(OBJ_GOODTERM1, /*goto*/ 0x2f)
		if_stage_flag_eq(STAGEFLAG_GOODTERM_DESTROYED, TRUE, /*goto*/ 0x2f)
		if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, TRUE, /*goto*/ 0x2f)
		set_stage_flag(STAGEFLAG_GOODTERM_DESTROYED)
		show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."

		label(0x2f)
		if_object_in_good_condition(OBJ_GOODTERM2, /*goto*/ 0x2f)
		if_stage_flag_eq(STAGEFLAG_GOODTERM_DESTROYED, TRUE, /*goto*/ 0x2f)
		if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, TRUE, /*goto*/ 0x2f)
		set_stage_flag(STAGEFLAG_GOODTERM_DESTROYED)
		show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."

		label(0x2f)
		if_object_in_good_condition(0x09, /*goto*/ 0x2f)
		if_stage_flag_eq(STAGEFLAG_GOODTERM_DESTROYED, TRUE, /*goto*/ 0x2f)
		if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, TRUE, /*goto*/ 0x2f)
		set_stage_flag(STAGEFLAG_GOODTERM_DESTROYED)
		show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."

		label(0x2f)
	endloop(0x04)

	endlist
};

u8 func0416_intro[] = {
	play_cutscene_track(MUSIC_INVESTIGATION_INTRO)
	camera_movement(ANIM_CUT_EAR_INTRO_CAM)
	cmd0175(60)
	set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
	set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)

	set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
	set_chr_chrflag(CHR_BOND, CHRCFLAG_PERIMDISABLEDTMP)
	set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
	chr_do_animation(ANIM_CUT_EAR_INTRO_JO, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 4)

	set_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_UNPLAYABLE)
	set_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_PERIMDISABLEDTMP)
	unset_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_HIDDEN)
	set_chr_hiddenflag(CHR_INTRO_GUARD, CHRHFLAG_00020000)
	chr_do_animation(ANIM_CUT_EAR_INTRO_GUARD_01, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_GUARD, 4)

	restart_timer
	fade_to_color(0x000000ff, 0)
	fade_to_color(0x00000000, 90)
	set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE)
	yield
	set_cutscene_weapon(CHR_BOND, WEAPON_FALCON2, WEAPON_NONE)

	#define wait_until(time, loopid) \
		beginloop(loopid) \
			if_controller_button_pressed(/*goto*/ 0x77) \
			if_timer_gt(time, /*goto*/ 0x06) \
		endloop(loopid) \
		label(0x06)

	wait_until(0, 0x56)
	play_sound(SFX_01D5, CHANNEL_7)

	wait_until(250, 0x57)
	play_sound(SFX_00EC, CHANNEL_CUTSCENE)

	wait_until(270, 0x58)
	play_sound(SFX_0171, CHANNEL_CUTSCENE)

	wait_until(290, 0x59)
	play_sound(SFX_0172, CHANNEL_CUTSCENE)

	wait_until(320, 0x5a)
	play_sound(SFX_0174, CHANNEL_CUTSCENE)

	wait_until(380, 0x5b)
	open_door(0x24)
	play_sound(SFX_0165, CHANNEL_7)

	wait_until(580, 0x5c)
	play_sound(SFX_01D2, CHANNEL_7)

	wait_until(950, 0x5d)
	play_sound(SFX_0172, CHANNEL_7)

	wait_until(990, 0x5e)
	play_sound(SFX_0171, CHANNEL_7)

	wait_until(1060, 0x5f)
	play_sound(SFX_0172, CHANNEL_7)

	wait_until(1090, 0x60)
	play_sound(SFX_0173, CHANNEL_7)

	wait_until(1140, 0x61)
	play_sound(SFX_01D3, CHANNEL_7)

	wait_until(1190, 0x62)
	play_sound(SFX_0031, CHANNEL_7)

	wait_until(1196, 0x68)
	play_sound(SFX_ARGH_MALE_008F, CHANNEL_6)

	wait_until(1310, 0x63)
	play_sound(SFX_0085, CHANNEL_7)

	wait_until(1370, 0x64)
	play_sound(SFX_007B, CHANNEL_7)

	wait_until(1410, 0x65)
	play_sound(SFX_0175, CHANNEL_7)

	wait_until(1430, 0x66)
	play_sound(SFX_0176, CHANNEL_7)

	wait_until(1600, 0x67)
	play_sound(SFX_0171, CHANNEL_7)

	beginloop(0x08)
		if_camera_animating(/*goto*/ 0x2f)
		goto_next(0x77)
		label(0x2f)
		if_controller_button_pressed(/*goto*/ 0x77)
		label(0x2f)
	endloop(0x08)

	label(0x77)
	set_door_open(0x24)
	set_door_open(0x40)
	unset_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
	unset_chr_chrflag(CHR_BOND, CHRCFLAG_PERIMDISABLEDTMP)
	set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
	chr_do_animation(ANIM_CUT_EAR_INTRO_JO, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 2)

	unset_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_UNPLAYABLE)
	set_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_INVINCIBLE)
	set_chr_hiddenflag(CHR_INTRO_GUARD, CHRHFLAG_00020000)
	chr_do_animation(ANIM_CUT_EAR_INTRO_GUARD_01, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_GUARD, 2)

	unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
	unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
	stop_cutscene_track
	stop_ambient_track
	enter_firstperson
	yield
	chr_do_animation(ANIM_CUT_EAR_INTRO_GUARD_02, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_GUARD, 2)
	yield
	kill(CHR_INTRO_GUARD)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func0417_outro[] = {
	play_cutscene_track(MUSIC_INVESTIGATION_OUTRO)
	set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
	set_chr_chrflag(CHR_P1P2_OPPOSITE, CHRCFLAG_HIDDEN)
	set_stage_flag(STAGEFLAG_TRIGGER_OUTRO_AUDIO)

	unset_chr_chrflag(CHR_P1P2, CHRCFLAG_HIDDEN)
	set_chr_chrflag(CHR_P1P2, CHRCFLAG_UNPLAYABLE)
	set_chr_hiddenflag(CHR_P1P2, CHRHFLAG_00020000)

	set_ailist(CHR_DRCAROLL, GAILIST_IDLE)
	set_ailist(CHR_K7_GUARD, GAILIST_IDLE)
	restart_timer
	dprint 's','h','o','t',' ','1',0,
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_01)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_01, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
	set_cutscene_weapon(CHR_P1P2, -1, -1)
	yield
	set_cutscene_weapon(CHR_P1P2, -1, WEAPON_FALCON2)
	show_nonessential_chrs(FALSE)

	#define wait_for_camera(loopid) \
		beginloop(loopid) \
			if_camera_animating(/*goto*/ 0x2f) \
			goto_next(0x06) \
			label(0x2f) \
			if_controller_button_pressed(/*goto*/ 0x06) \
		endloop(loopid) \
		label(0x06)

	wait_for_camera(0x08)

	dprint 's','h','o','t',' ','2',0,
	if_controller_button_pressed(/*goto*/ 0x06)
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_02)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_02, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)

	wait_for_camera(0x09)

	dprint 's','h','o','t',' ','3',0,
	if_controller_button_pressed(/*goto*/ 0x06)
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_03)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_03, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)

	wait_for_camera(0x0a)

	dprint 's','h','o','t',' ','4',0,
	if_controller_button_pressed(/*goto*/ 0x06)
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_04)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_04, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
	restart_timer

	beginloop(0x0b)
		if_camera_animating(/*goto*/ 0x2f)
		goto_next(0x06)
		label(0x2f)
		if_controller_button_pressed(/*goto*/ 0x06)
		if_timer_gt(282, /*goto*/ 0x2f)
	endloop(0x0b)

	label(0x2f)
	open_door(0x23)

	beginloop(0x5f)
		if_camera_animating(/*goto*/ 0x2f)
		goto_next(0x06)
		label(0x2f)
		if_controller_button_pressed(/*goto*/ 0x06)
	endloop(0x5f)

	label(0x2f)
	label(0x06)
	dprint 's','h','o','t',' ','5',0,
	if_controller_button_pressed(/*goto*/ 0x06)
	unset_chr_chrflag(CHR_DRCAROLL, CHRCFLAG_HIDDEN)
	set_chr_chrflag(CHR_DRCAROLL, CHRCFLAG_UNPLAYABLE)
	set_chr_hiddenflag(CHR_DRCAROLL, CHRHFLAG_00020000)
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_05)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_05, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_DRC_01, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)

	wait_for_camera(0x0c)

	dprint 's','h','o','t',' ','6',0,
	if_controller_button_pressed(/*goto*/ 0x06)
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_06)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_06, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_DRC_02, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)

	wait_for_camera(0x0d)

	dprint 's','h','o','t',' ','7',0,
	if_controller_button_pressed(/*goto*/ 0x06)
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_07)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_07, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_DRC_03, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)

	wait_for_camera(0x0e)

	dprint 's','h','o','t',' ','8',0,
	camera_movement(ANIM_CUT_EAR_OUTRO_CAM_08)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_JO_08, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
	chr_do_animation(ANIM_CUT_EAR_OUTRO_DRC_04, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)

	wait_for_camera(0x0f)

	end_level
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1010_intro_from_menu[] = {
	set_returnlist(CHR_SELF, GAILIST_END_CINEMA)
	set_ailist(CHR_SELF, 0x0416)
	endlist
};

u8 func0417_outro_from_menu[] = {
	set_returnlist(CHR_SELF, GAILIST_END_CINEMA)
	set_ailist(CHR_SELF, AILIST_OUTRO)
	endlist
};

u8 unregistered_function1[] = {
	set_returnlist(CHR_SELF, 0x0419)
	set_ailist(CHR_SELF, 0x0416)
	endlist
};

u8 unregistered_function2[] = {
	set_returnlist(CHR_SELF, 0x041a)
	set_ailist(CHR_SELF, AILIST_OUTRO)
	endlist
};

u8 func1415_outro_audio[] = {
	label(0x79)
		if_stage_flag_eq(STAGEFLAG_TRIGGER_OUTRO_AUDIO, TRUE, /*goto*/ 0x7a)
		yield
	goto_first(0x79)

	label(0x7a)
	unset_stage_flag(STAGEFLAG_TRIGGER_OUTRO_AUDIO)
	label(0x2f)
	restart_timer
	disable_object(0x37)
	disable_object(0x38)
	mute_channel(CHANNEL_0)
	mute_channel(CHANNEL_1)
	mute_channel(CHANNEL_2)
	mute_channel(CHANNEL_3)
	mute_channel(CHANNEL_4)
	mute_channel(CHANNEL_5)
	mute_channel(CHANNEL_6)
	mute_channel(CHANNEL_7)

	#define outro_wait_until(time, loopid) \
		beginloop(loopid) \
			if_controller_button_pressed(/*goto*/ 0x77) \
			if_timer_gt(time, /*goto*/ 0x06) \
		endloop(loopid) \
		label(0x06)

	outro_wait_until(78, 0x56)
	play_sound(SFX_0161, CHANNEL_6)

	outro_wait_until(116, 0x57)
	play_sound(SFX_0165, CHANNEL_7)

	outro_wait_until(131, 0x58)
	play_sound(SFX_0166, CHANNEL_5)

	outro_wait_until(162, 0x59)
	play_sound(SFX_0167, CHANNEL_6)

	outro_wait_until(197, 0x5a)
	play_sound(SFX_0168, CHANNEL_7)

	outro_wait_until(236, 0x5b)
	play_sound(SFX_0167, CHANNEL_5)

	outro_wait_until(266, 0x5c)
	play_sound(SFX_0168, CHANNEL_6)

	outro_wait_until(281, 0x5d)
	play_sound(SFX_0165, CHANNEL_7)

	outro_wait_until(335, 0x5e)
	play_sound(SFX_0162, CHANNEL_5)

	outro_wait_until(384, 0x5f)
	play_sound(SFX_0163, CHANNEL_6)

	outro_wait_until(415, 0x60)
	play_sound(SFX_0164, CHANNEL_7)

	outro_wait_until(434, 0x61)
	play_sound(SFX_0163, CHANNEL_5)

	outro_wait_until(474, 0x62)
	play_sound(SFX_0164, CHANNEL_6)

	outro_wait_until(511, 0x63)
	play_sound(SFX_0163, CHANNEL_7)

	outro_wait_until(356, 0x65)
	play_sound(SFX_0164, CHANNEL_5)

	outro_wait_until(581, 0x66)
	play_sound(SFX_0161, CHANNEL_6)

	outro_wait_until(620, 0x68)
	speak(CHR_P1P2, L_EAR_100, MP3_03EC, CHANNEL_7, COLOR_09_BLUE) // "Dr. Caroll?"

	outro_wait_until(676, 0x67)
	play_sound(SFX_0162, CHANNEL_6)

	outro_wait_until(747, 0x69)
	play_sound(SFX_0163, CHANNEL_5)

	outro_wait_until(750, 0x6a)
	speak(CHR_P1P2, L_EAR_101, MP3_03ED, CHANNEL_7, COLOR_09_BLUE) // "Dr. Caroll, are you here?"

	outro_wait_until(864, 0x6b)
	speak(CHR_P1P2, L_EAR_102, MP3_03EE, CHANNEL_7, COLOR_04_ORANGE) // "Well, is it safe to come out?"

	outro_wait_until(1027, 0x6c)
	speak(CHR_P1P2, L_EAR_103, MP3_03EF, CHANNEL_7, COLOR_09_BLUE) // "Yes, all clear."

	outro_wait_until(1200, 0x6f)
	mute_channel(CHANNEL_6)

	play_sound(SFX_DOOR_042C, CHANNEL_4)
	outro_wait_until(1219, 0x70)

	outro_wait_until(1254, 0x71)
	speak(CHR_P1P2, L_EAR_104, MP3_03F0, CHANNEL_7, COLOR_09_BLUE) // "Wh..what... you're..."

	outro_wait_until(1460, 0x73)
	speak(CHR_P1P2, L_EAR_105, MP3_03F1, CHANNEL_7, COLOR_04_ORANGE) // "Very professionally done, my dear, but there's no ..."

	outro_wait_until(1556, 0x74)
	mute_channel(CHANNEL_5)
	play_sound(SFX_DOOR_042C, CHANNEL_6)

	outro_wait_until(1900, 0x75)
	speak(CHR_P1P2, L_EAR_106, MP3_03F2, CHANNEL_7, COLOR_04_ORANGE) // "Come on. I have vital information, and you must pr..."

	outro_wait_until(2200, 0x76)
	play_sound(SFX_0161, CHANNEL_6)

	label(0x77)
	goto_first(0x79)

	endlist
};

u8 func100f_check_for_end_level[] = {
	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0063, /*goto*/ 0x2f)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0065, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_door_state(0x26, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x06)
		reloop(0x04)

		label(0x06)
		set_stage_flag(STAGEFLAG_DRCAROLL_LOCATED)
		dprint 's','h','o','t',' ','6',0,
		yield
#if VERSION < VERSION_NTSC_1_0
		yield
#endif
		if_all_objectives_complete(/*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2f)
	if_chr_dead(CHR_BOND, /*goto*/ 0x2f)
	if_chr_knockedout(CHR_BOND, /*goto*/ 0x2f)
	goto_next(0x06)

	label(0x2f)
	if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2f)
	if_chr_dead(CHR_COOP, /*goto*/ 0x2f)
	if_chr_knockedout(CHR_COOP, /*goto*/ 0x2f)
	goto_next(0x06)

	label(0x2f)
	end_level
	set_ailist(CHR_SELF, GAILIST_IDLE)

	label(0x06)
	set_invincible(CHR_BOND)
	set_ailist(CHR_SELF, AILIST_OUTRO)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1400_setup_counterop[] = {
	yield
	set_chr_team(CHR_ANTI, TEAM_ENEMY)
	give_object_to_chr(OBJ_DATAUPLINK_BOND, CHR_BOND)
	give_object_to_chr(OBJ_DATAUPLINK_COOP, CHR_COOP)
	set_ailist(CHR_SELF, GAILIST_REBUILD_GROUPS)
	endlist
};

u8 func1011_spawn_guards_during_uplink[] = {
	if_difficulty_lt(DIFF_SA, /*goto*/ 0x0d)
	beginloop(0x04)
		if_stage_flag_eq(STAGEFLAG_UPLINK_SEARCHING, TRUE, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	restart_timer
	try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_0131, AILIST_UPLINK_RESPONDER, SPAWNFLAG_ALLOWONSCREEN | SPAWNFLAG_BASICGUARD, /*goto*/ 0x09)

	beginloop(0x09)
		if_timer_gt(30, /*goto*/ 0x06)
	endloop(0x09)

	label(0x06)
	try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_0132, AILIST_UPLINK_RESPONDER, SPAWNFLAG_ALLOWONSCREEN | SPAWNFLAG_BASICGUARD, /*goto*/ 0x0a)

	beginloop(0x0a)
		if_timer_gt(60, /*goto*/ 0x06)
	endloop(0x0a)

	label(0x06)
	label(0x0d)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func0409_uplink_responder[] = {
	if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
	set_accuracy(20)
	goto_next(0x06)

	label(0x2f)
	set_accuracy(10)

	label(0x06)
	try_equip_weapon(MODEL_CHRCMP150, WEAPON_CMP150, 0x00000000, /*goto*/ 0x06)
	label(0x06)
	set_chr_team(CHR_SELF, TEAM_ENEMY)
	set_squadron(SQUADRON_09)
	set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
	set_self_flag_bankx(CHRFLAG0_00008000, BANK_0)
	set_alertness(110)
	set_self_chrflag(CHRCFLAG_CANCHANGEACTDURINGARGH)
	label(0x06)
	rebuild_teams
	rebuild_squadrons
	set_ailist(CHR_SELF, GAILIST_UNALERTED)
	endlist
};

u8 func1012_start_laser_sound[] = {
	label(0x04)
	yield
	assign_sound(SFX_8119, CHANNEL_0)
	play_repeating_sound_from_object(CHANNEL_0, 0x28, 1, 300, 400)
	label(0x2f)
	assign_sound(SFX_811A, CHANNEL_1)
	play_repeating_sound_from_object(CHANNEL_1, 0x2d, 1, 300, 400)
	label(0x2f)
	assign_sound(SFX_8119, CHANNEL_2)
	play_repeating_sound_from_object(CHANNEL_2, 0x32, 1, 300, 400)
	assign_sound(SFX_01C5, CHANNEL_3)
	play_repeating_sound_from_object(CHANNEL_3, 0x38, 1, 600, 800)
	assign_sound(SFX_01C5, CHANNEL_4)
	play_repeating_sound_from_object(CHANNEL_4, 0x37, 1, 600, 800)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1013_hatch_pc[] = {
	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_chr_activated_object(CHR_TARGET, OBJ_HATCHPC, /*goto*/ 0x06)
		reloop(0x04)

		label(0x06)
		if_door_locked(0x3f, 0x08, /*goto*/ 0x56)
		goto_next(0x2f)

		label(0x56)
		play_sound(SFX_00F7, -1)
		show_hudmsg(CHR_TARGET, L_EAR_061) // "Maintenance hatch is now open."
		unlock_door(0x3f, 0x08)
		reloop(0x04)

		label(0x2f)
		show_hudmsg(CHR_TARGET, L_EAR_062) // "Maintenance hatch is already open."
		restart_timer

		beginloop(0x57)
			if_timer_gt(120, /*goto*/ 0x2f)
		endloop(0x57)

		label(0x2f)
	endloop(0x04)

	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func0415_radioactivity[] = {
	restart_timer

	beginloop(0x04)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0014, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0015, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0016, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0017, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0018, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0019, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x001a, /*goto*/ 0x06)
		reloop(0x04)

		label(0x06)
		show_hudmsg(CHR_TARGET, L_EAR_063) // "WARNING - radioactive matter detected."
		restart_timer
		label(0x08)
		yield
		add_motion_blur(CHR_TARGET, 10, TRUE)
		if_timer_lt(300, /*goto*/ 0x2f)
		restart_timer
		damage_chr_by_amount(CHR_TARGET, 4, 0)
		label(0x2f)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0014, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0015, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0016, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0017, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0018, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0019, /*goto*/ 0x06)
		if_chr_in_room(CHR_TARGET, 0x00, 0x001a, /*goto*/ 0x06)
	endloop(0x04)

	label(0x06)
	goto_first(0x08)

	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1014_jo_radioactivity[] = {
	set_target_chr(CHR_BOND)
	set_ailist(CHR_SELF, AILIST_RADIOACTIVITY)
	endlist
};

u8 func101d_coop_radioactivty[] = {
	yield
	set_target_chr(CHR_COOP)
	if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x2f)
	set_ailist(CHR_SELF, AILIST_RADIOACTIVITY)
	label(0x2f)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1021_counterop_radioactivity[] = {
	yield
	set_target_chr(CHR_ANTI)
	if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x2f)
	set_ailist(CHR_SELF, AILIST_RADIOACTIVITY)
	label(0x2f)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func0402_k7_guard[] = {
	set_accuracy(20)
	set_reaction_speed(100)
	set_shotlist(GAILIST_ALERTED)

	beginloop(0x0f)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		set_chrpreset(CHR_P1P2)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0036, /*goto*/ 0x03)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0037, /*goto*/ 0x03)
		if_chr_in_room(CHR_TARGET, 0x00, 0x003a, /*goto*/ 0x03)
	endloop(0x0f)

	label(0x03)
		restart_timer
		call_rng
		if_rand_gt(128, /*goto*/ 0x06)
		label(0x2f)
		say_quip(CHR_PRESET, 0x09, 0xff, 0x02, 0xff, BANK_1, 0x00, 0x00)
		label(0x06)

		beginloop(0x04)
			chr_toggle_p1p2(CHR_SELF)
			set_target_chr(CHR_P1P2)
			if_can_see_target(/*goto*/ 0x0c)
			if_near_miss(/*goto*/ 0x0c)
			if_num_times_shot_gt(0, /*goto*/ 0x0c)
			if_saw_injury(0x00, /*goto*/ 0x0c)
			if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
			if_timer_gt(120, /*goto*/ 0x06)
		endloop(0x04)

		label(0x06)
		try_attack_stand(ATTACKFLAG_AIMATPAD | ATTACKFLAG_AIMONLY, 0x0159, /*goto*/ 0x2f)
		label(0x2f)
		try_modify_attack(ATTACKFLAG_AIMATPAD, 0x0159, /*goto*/ 0x2f)
		label(0x2f)
		say_quip(CHR_BOND, QUIP_ATTACK1, 0x32, 0x02, 0xff, BANK_0, 0x00, 0x00)

		beginloop(0x08)
			chr_toggle_p1p2(CHR_SELF)
			set_target_chr(CHR_P1P2)
			if_can_see_target(/*goto*/ 0x0c)
			if_near_miss(/*goto*/ 0x0c)
			if_num_times_shot_gt(0, /*goto*/ 0x0c)
			if_saw_injury(0x00, /*goto*/ 0x0c)
			if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
			if_chr_stopped(/*goto*/ 0x2f)
		goto_first(0x08)

		label(0x2f)
		call_rng
		if_rand_gt(200, /*goto*/ 0x2f)
	goto_first(0x03)

	label(0x2f)
	stop_chr
	restart_timer
	call_rng
	if_rand_gt(128, /*goto*/ 0x06)
	assign_sound(MP3_0299, CHANNEL_6)
	play_sound_from_entity(CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01)

	beginloop(0x0c)
		if_timer_gt(120, /*goto*/ 0x2f)
	endloop(0x0c)

	label(0x2f)
	say_quip(CHR_PRESET, 0x08, 0xff, 0x02, 0xff, BANK_1, 0x00, 0x00)
	label(0x06)
	if_chr_distance_to_pad_lt(CHR_SELF, 100, PAD_EAR_013B, /*goto*/ 0x2f)
	walk_to_pad(PAD_EAR_013B)
	label(0x2f)
	restart_timer

	beginloop(0x09)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_can_see_target(/*goto*/ 0x0c)
		if_near_miss(/*goto*/ 0x0c)
		if_num_times_shot_gt(0, /*goto*/ 0x0c)
		if_saw_injury(0x00, /*goto*/ 0x0c)
		if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
		if_timer_gt(180, /*goto*/ 0x06)
	endloop(0x09)

	label(0x06)
	restart_timer

	beginloop(0x0a)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_can_see_target(/*goto*/ 0x0c)
		if_near_miss(/*goto*/ 0x0c)
		if_num_times_shot_gt(0, /*goto*/ 0x0c)
		if_saw_injury(0x00, /*goto*/ 0x0c)
		if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
		if_timer_gt(300, /*goto*/ 0x06)
	endloop(0x0a)

	label(0x06)
	goto_first(0x03)

	label(0x0c)
	set_ailist(CHR_SELF, GAILIST_UNALERTED)
	endlist
};

u8 func0403_k7_scientist[] = {
	beginloop(0x14)
		chr_toggle_p1p2(CHR_SELF)
		set_target_chr(CHR_P1P2)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0035, /*goto*/ 0x03)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0036, /*goto*/ 0x03)
		if_chr_in_room(CHR_TARGET, 0x00, 0x0037, /*goto*/ 0x03)
		if_chr_in_room(CHR_TARGET, 0x00, 0x003a, /*goto*/ 0x03)
	endloop(0x14)

	label(0x03)
		stop_chr
		restart_timer

		beginloop(0x08)
			chr_toggle_p1p2(CHR_SELF)
			set_target_chr(CHR_P1P2)
			if_can_see_target(/*goto*/ 0x0c)
			if_near_miss(/*goto*/ 0x0c)
			if_num_times_shot_gt(0, /*goto*/ 0x0c)
			if_saw_injury(0x00, /*goto*/ 0x0c)
			if_saw_death(0x00, /*goto*/ 0x0c)
			if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
			call_rng
			if_rand_lt(1, /*goto*/ 0x06)
		endloop(0x08)

		label(0x06)
		call_rng
		if_rand_lt(64, /*goto*/ 0x09)
		if_rand_lt(128, /*goto*/ 0x0a)
		if_rand_lt(196, /*goto*/ 0x0b)
		chr_do_animation(ANIM_GRAB_CROTCH, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
		goto_next(0x0f)
		label(0x09)
		chr_do_animation(ANIM_YAWN, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
		goto_next(0x0f)
		label(0x0a)
		chr_do_animation(ANIM_ROLL_HEAD, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
		goto_next(0x0f)
		label(0x0b)
		chr_do_animation(ANIM_GRAB_BUTT, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
		goto_next(0x0f)

		beginloop(0x0f)
			chr_toggle_p1p2(CHR_SELF)
			set_target_chr(CHR_P1P2)
			if_can_see_target(/*goto*/ 0x0c)
			if_near_miss(/*goto*/ 0x0c)
			if_num_times_shot_gt(0, /*goto*/ 0x0c)
			if_saw_injury(0x00, /*goto*/ 0x0c)
			if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
			if_chr_stopped(/*goto*/ 0x2f)
		endloop(0x0f)

		label(0x2f)
	goto_first(0x03)

	label(0x0c)
	assign_sound(MP3_028F, CHANNEL_6)
#if VERSION >= VERSION_NTSC_1_0
	play_sound_from_entity(CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01)
#endif
	increase_squadron_alertness(100)
	jog_to_pad(PAD_EAR_0133)

	beginloop(0x0d)
		if_chr_stopped(/*goto*/ 0x10)
	endloop(0x0d)

	label(0x10)
		chr_do_animation(ANIM_COWER_0229, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)

		beginloop(0x0e)
			if_chr_stopped(/*goto*/ 0x2f)
		endloop(0x0e)

		label(0x2f)
	goto_first(0x10)

	endlist
};

u8 func1016_setup_drcaroll[] = {
	set_chr_chrflag(CHR_DRCAROLL, CHRCFLAG_HIDDEN)
	set_ailist(CHR_DRCAROLL, GAILIST_INVINCIBLE_AND_IDLE)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func040a_init_basic_guard[] = {
	set_chr_dodge_rating(2, 10)
	set_accuracy(1)
	set_reaction_speed(20)
	set_chr_maxdamage(CHR_SELF, 40)
	add_health_or_armor(0)
	set_recovery_speed(0)
	set_shield(0)
	set_ailist(CHR_SELF, GAILIST_UNALERTED)
	endlist
};

u8 func040b_init_shock_guard[] = {
	set_chr_dodge_rating(2, 10)
	set_accuracy(11)
	set_reaction_speed(20)
	set_chr_maxdamage(CHR_SELF, 40)
	add_health_or_armor(0)
	set_recovery_speed(10)
	set_shield(0)
	set_ailist(CHR_SELF, GAILIST_UNALERTED)
	endlist
};

u8 func1019_msg_securitysector[] = {
	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0052, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	speak(CHR_P1P2, L_EAR_094, SFX_8173, CHANNEL_6, COLOR_09_BLUE) // "That's the highest security sector - Dr. Caroll ha..."
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func101a_msg_lotofpower[] = {
	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0031, /*goto*/ 0x2f)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0042, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	speak(CHR_P1P2, L_EAR_095, MP3_03A5, CHANNEL_6, COLOR_09_BLUE) // "Something around here's using a lot of power."
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func101b_msg_reprogram[] = {
	if_difficulty_lt(DIFF_SA, /*goto*/ 0x08)

	beginloop(0x04)
		chr_toggle_p1p2(CHR_SELF)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0026, /*goto*/ 0x2f)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0024, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	speak(CHR_P1P2, L_EAR_096, SFX_8174, CHANNEL_6, COLOR_09_BLUE) // "Reprogram that cleaning bot - it'll give you a way..."
	label(0x08)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func101c_msg_radioactive[] = {
	beginloop(0x04)
		if_objective_complete(0, /*goto*/ 0x06)
		chr_toggle_p1p2(CHR_SELF)
		if_chr_in_room(CHR_P1P2, 0x00, 0x0014, /*goto*/ 0x2f)
	endloop(0x04)

	label(0x2f)
	speak(CHR_P1P2, L_EAR_097, SFX_8175, CHANNEL_6, COLOR_09_BLUE) // "Get out, Jo! The levels are too high. Use the CamS..."
	label(0x06)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func101e_unlock_drcaroll_door[] = {
	beginloop(0x04)
		if_objective_complete(0, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_difficulty_lt(DIFF_SA, /*goto*/ 0x06)
		if_objective_complete(1, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_objective_complete(2, /*goto*/ 0x2f)
		reloop(0x04)

		label(0x2f)
		if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
		if_objective_complete(3, /*goto*/ 0x06)
	endloop(0x04)

	label(0x06)
	unlock_door(0x26, 0x40)
	unlock_door(0x5a, 0x40)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func101f_check_bot_destroyed[] = {
	beginloop(0x04)
		if_object_in_good_condition(OBJ_PURPLEBOT, /*goto*/ 0x2f)
		goto_next(0x08)
		label(0x2f)
	endloop(0x04)

	// 0x32 is a laser
	beginloop(0x08)
		if_door_state(0x32, DOORSTATE_CLOSED, /*goto*/ 0x2f)
	endloop(0x08)

	label(0x2f)
	if_chr_in_room(CHR_BOND, 0x00, 0x004d, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x004e, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x004f, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0050, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0051, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0052, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0053, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0054, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0055, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0056, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0057, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0058, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0059, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x005a, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x005b, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x005c, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x005d, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x005e, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x005f, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0061, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0062, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0063, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x006c, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x006b, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0069, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0068, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x006d, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x006e, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0064, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0065, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0066, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0060, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x0067, /*goto*/ 0x06)
	if_chr_in_room(CHR_BOND, 0x00, 0x006a, /*goto*/ 0x06)

	if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x0b)
	if_chr_in_room(CHR_COOP, 0x00, 0x004d, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x004e, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x004f, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0050, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0051, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0052, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0053, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0054, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0055, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0056, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0057, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0058, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0059, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x005a, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x005b, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x005c, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x005d, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x005e, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x005f, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0061, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0062, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0063, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x006c, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x006b, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0069, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0068, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x006d, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x006e, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0064, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0065, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0066, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0060, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x0067, /*goto*/ 0x06)
	if_chr_in_room(CHR_COOP, 0x00, 0x006a, /*goto*/ 0x06)

	label(0x0b)
	show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
	set_stage_flag(STAGEFLAG_00000008)
	set_stage_flag(STAGEFLAG_00000004)
	if_stage_flag_eq(STAGEFLAG_HAS_K7AVENGER, TRUE, /*goto*/ 0x2f)
	set_stage_flag(STAGEFLAG_ITEMS_UNCOLLECTABLE)
	label(0x2f)
	if_stage_flag_eq(STAGEFLAG_HAS_NIGHTVISION, TRUE, /*goto*/ 0x2f)
	set_stage_flag(STAGEFLAG_ITEMS_UNCOLLECTABLE)
	label(0x2f)
	set_ailist(CHR_SELF, GAILIST_IDLE)

	label(0x06)
	if_objective_complete(0, /*goto*/ 0x2f)
	goto_first(0x0b)

	label(0x2f)
	if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
	if_objective_complete(2, /*goto*/ 0x2f)
	goto_first(0x0b)

	label(0x2f)
	if_difficulty_lt(DIFF_PA, /*goto*/ 0x0d)
	if_chr_has_object(CHR_BOND, OBJ_K7AVENGER, /*goto*/ 0x2f)
	if_chr_has_object(CHR_COOP, OBJ_K7AVENGER, /*goto*/ 0x2f)
	goto_first(0x0b)

	label(0x2f)
	if_chr_has_object(CHR_BOND, OBJ_NIGHTVISION, /*goto*/ 0x2f)
	if_chr_has_object(CHR_COOP, OBJ_NIGHTVISION, /*goto*/ 0x2f)
	label(0x0d)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1020_lock_agent_doors[] = {
	label(0x04)
	yield
	if_difficulty_gt(DIFF_A, /*goto*/ 0x2f)
	lock_door(0x5b, 0x08)
	lock_door(0x5c, 0x08)
	lock_door(0x5d, 0x08)
	lock_door(0x5e, 0x08)
	lock_door(0x5f, 0x08)
	label(0x2f)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1022_setup_rtracker[] = {
	yield
	set_object_flag3(OBJ_CMP150_1, OBJFLAG3_RTRACKED_BLUE)
	set_object_flag3(OBJ_CMP150_2, OBJFLAG3_RTRACKED_BLUE)
	set_object_flag3(OBJ_PROXYMINES, OBJFLAG3_RTRACKED_BLUE)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1423_setup_environment[] = {
	yield
	configure_environment(0x0000, AIENVCMD_00, FALSE)
	configure_environment(0x0000, AIENVCMD_01, FALSE)
	configure_environment(0x0000, AIENVCMD_02, FALSE)
	configure_environment(0x0000, AIENVCMD_03, FALSE)
	configure_environment(0x0000, AIENVCMD_04, FALSE)
	configure_environment(0x0001, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0006, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0007, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0014, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0015, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0016, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0017, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0018, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0019, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x001a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0023, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0024, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0025, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0026, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0027, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0028, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0029, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0031, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0032, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0034, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0035, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0036, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x003e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x003f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0042, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0043, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0044, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0045, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0046, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x005e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x005f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0060, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0064, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0065, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0066, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0067, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x0069, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	configure_environment(0x006a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1424_start_lift[] = {
	activate_lift(1, 0x60)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

struct ailist ailists[] = {
	{ func0401_init_chr_with_flag,             0x0401 },
	{ func0402_k7_guard,                       0x0402 },
	{ func0403_k7_scientist,                   0x0403 },
	{ func0404_scientist,                      0x0404 },
	{ func0405_init_scientist,                 0x0405 },
	{ func0406_nasty_scientist,                0x0406 },
	{ func0407_init_nasty_scientist,           0x0407 },
	{ func0408_alarm_responder,                0x0408 },
	{ func0409_uplink_responder,               0x0409 },
	{ func040a_init_basic_guard,               0x040a },
	{ func040b_init_shock_guard,               0x040b },
	{ func040c_start_path00,                   0x040c },
	{ func040d_start_path01,                   0x040d },
	{ func040e_start_path02,                   0x040e },
	{ func040f_start_path03,                   0x040f },
	{ func0410_start_path04,                   0x0410 },
	{ func0411_yellowbot,                      0x0411 },
	{ func0412_purplebot_programs,             0x0412 },
	{ func0413_purplebot_at_lasers,            0x0413 },
	{ func0415_radioactivity,                  0x0415 },
	{ func1400_setup_counterop,                0x1400 },
	{ func1001_objectives_failed_msg,          0x1001 },
	{ func1002_bot_activation_terminal,        0x1002 },
	{ func1003_bot_programming_terminal,       0x1003 },
	{ func1004_check_items_collected,          0x1004 },
	{ func1005_check_unacceptable_casualties,  0x1005 },
	{ func1006_terminal_activation,            0x1006 },
	{ func1007_uplink,                         0x1007 },
	{ func1008_check_bot_terminals_destroyed,  0x1008 },
	{ func1009_weaponscache,                   0x1009 },
	{ func100a_spawn_alarm_responders,         0x100a },
	{ func100b_check_uplink_pc_destroyed,      0x100b },
	{ func100c_shuffle_terminals,              0x100c },
	{ func100e_experiment_terminals_destroyed, 0x100e },
	{ func100f_check_for_end_level,            0x100f },
	{ func1010_intro_from_menu,                0x1010 },
	{ func1011_spawn_guards_during_uplink,     0x1011 },
	{ func1012_start_laser_sound,              0x1012 },
	{ func1013_hatch_pc,                       0x1013 },
	{ func1014_jo_radioactivity,               0x1014 },
	{ func1415_outro_audio,                    0x1415 },
	{ func1016_setup_drcaroll,                 0x1016 },
	{ func1018_item_pickup_messages,           0x1018 },
	{ func1019_msg_securitysector,             0x1019 },
	{ func101a_msg_lotofpower,                 0x101a },
	{ func101b_msg_reprogram,                  0x101b },
	{ func101c_msg_radioactive,                0x101c },
	{ func101d_coop_radioactivty,              0x101d },
	{ func101e_unlock_drcaroll_door,           0x101e },
	{ func101f_check_bot_destroyed,            0x101f },
	{ func1020_lock_agent_doors,               0x1020 },
	{ func1021_counterop_radioactivity,        0x1021 },
	{ func1022_setup_rtracker,                 0x1022 },
	{ func1423_setup_environment,              0x1423 },
	{ func1424_start_lift,                     0x1424 },
	{ func0414_walk_3_pads,                    0x0414 },
	{ func0416_intro,                          0x0416 },
	{ func0417_outro,                          0x0417 },
	{ func1010_intro_from_menu,                0x0c00 },
	{ func0417_outro_from_menu,                0x0c01 },
	{ NULL, 0 },
};

struct path paths[] = {
	{ path00, 0, 0 },
	{ path01, 1, 0 },
	{ path02, 2, 0 },
	{ path03, 3, 0 },
	{ path04, 4, 0 },
	{ path05, 5, 0 },
	{ path06, 6, 0 },
	{ path07, 7, 0 },
	{ path08, 8, 0 },
	{ path09, 9, 0 },
#if VERSION >= VERSION_NTSC_1_0
	{ path10, 10, PATHFLAG_CIRCULAR },
#else
	{ path10, 10, 0 },
#endif
	{ path11, 11, 0 },
	{ path12, 12, 0 },
	{ path13, 13, 0 },
	{ NULL, 0, 0 },
};
